Python Regex找到独立的案例

时间:2017-08-05 02:40:49

标签: python regex

我有一串时间,例如:

text = '2010; 04/20/2010; 04/2009'

我想只找到第一个独立的' 2010',但应用以下代码:

re.findall(r'\d{4}', text)

也会找到第二个' 2010'以mm / dd / yyyy格式嵌入。

有没有办法实现这一目标(不使用&#39 ;;'标志)?

2 个答案:

答案 0 :(得分:2)

您可以使用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   字符串中的位置与模式匹配;请注意这是   不同于在某个点找到零长度匹配   字符串。

强调我的。

答案 1 :(得分:1)

我不知道你是否必须使用正则表达式,但Python3中的.find()将返回你正在寻找的字符串开头的最低索引。从那里,如果你知道我假设你做的字符串的长度,你可以用另一行代码的字符串片断外推它。不确定它是否比正则表达式更好或更差,但似乎不那么复杂的版本对此事件做同样的事情。 Here是关于它的堆栈溢出,而here是它上面的python文档