如何使用正则表达式选择字符串中的第一个 4 个数字序列?



>我有以下字符串:

aasd2016/20182000 2019asd

我想要一个与第一个4 位数字序列匹配的正则表达式模式。在这种情况下,我希望正则表达式返回:

2016

我尝试了以下方法:

d{4}(.*?)

我认为(.*?)意味着非贪婪匹配(尽可能匹配一些(,但它匹配每个 4 个数字序列。

编辑

我正在将其与python库熊猫一起使用,以过滤掉数据框中格式奇怪的"buildYear"列:

pattern = r"d{4}(.*?)"
filter = all_objects["buildYear"].str.contains(pattern)
all_objects = all_objects[filter]

您可以使用

d{4}

没有g标志

let str = `aasd2016/20182000 2019asd`
let op = str.match(/d{4}/)
console.log(op)

如果你正在使用DataFrame,你可以使用str.extract

import pandas as pd
df = pd.DataFrame({
'buildYear': [
'aasd2016/20182000 2019asd', 'axc2000 33 2014', 'spam33_20/2018 2019'
]})
df['result'] = df['buildYear'].str.extract(r'(d{4})')
buildYear                   result
0   aasd2016/20182000 2019asd   2016
1   axc2000 33 2014             2000
2   spam33_20/2018 2019         2018

在纯 Python 中,相当于 @Code Maniac 的答案是使用re.search

>>> import re
>>> s = 'aasd2016/20182000 2019asd'
>>> re.search(r'(d{4})', s).group(1)
'2016'

最新更新