>我有以下字符串:
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'