【发布时间】:2017-08-05 02:40:48
【问题描述】:
我有一串时间例如:
text = '2010; 04/20/2010; 04/2009'
我只想找到第一个独立的“2010”,但应用以下代码:
re.findall(r'\d{4}', text)
还将找到嵌入 mm/dd/yyyy 格式的第二个“2010”。
有没有办法实现这一点(不使用';'符号)?
【问题讨论】:
我有一串时间例如:
text = '2010; 04/20/2010; 04/2009'
我只想找到第一个独立的“2010”,但应用以下代码:
re.findall(r'\d{4}', text)
还将找到嵌入 mm/dd/yyyy 格式的第二个“2010”。
有没有办法实现这一点(不使用';'符号)?
【问题讨论】:
您可以使用re.search 仅查找第一个匹配项:
>>> import re
>>> text = '2010; 04/20/2010; 04/2009'
>>> re.search('\d{4}', text)
<_sre.SRE_Match object; span=(0, 4), match='2010'>
>>> re.search('\d{4}', text).group()
'2010'
>>>
来自文档:
re.search(pattern, string, flags=0)扫一扫
string寻找 第一个位置,正则表达式pattern生成 匹配,并返回对应的match object。如果没有返回None字符串中的位置与模式匹配;请注意,这是 不同于在某个点找到零长度匹配 字符串。
强调我的。
【讨论】: