Python 正则表达式匹配模式,而不是最小长度,而不是所需的最大长度
下面的代码作为示例返回Python 正则表达式匹配模式,而不是最小长度,而不是所需的最大长度,python,regex,string,parsing,text,Python,Regex,String,Parsing,Text,下面的代码作为示例返回'ol',目标是返回单词'cool' import re re.search( r'.*([a-z]{2,}).*', 'this is very cool').group(1) 也就是说,正则表达式匹配“至少2个字符”,并且没有检查是否可以匹配更多字符。如何让正则表达式匹配可能的最大字符数而不是最小字符数 也就是说,如何实现'cool'的输出?获得ol的原因是模式中的初始*一次捕获整个字符串,然后发生回溯以适应后续子模式。当ol从抓取的文本中“释放”时,[a-z]{1,
'ol'
,目标是返回单词'cool'
import re
re.search( r'.*([a-z]{2,}).*', 'this is very cool').group(1)
也就是说,正则表达式匹配“至少2个字符”,并且没有检查是否可以匹配更多字符。如何让正则表达式匹配可能的最大字符数而不是最小字符数
也就是说,如何实现
'cool'
的输出?获得ol
的原因是模式中的初始*
一次捕获整个字符串,然后发生回溯以适应后续子模式。当ol
从抓取的文本中“释放”时,[a-z]{1,2}
匹配该子字符串,正则表达式引擎调用它一天并返回匹配项(后面的*
在这里不重要)
您可以使用单词边界来确保*
回溯到以2个小写字母开头的最后一个单词的开头,并且可能有更多:
.*\b([a-z]{2,})
见
:
您可以使用r'\b(\w{2,})\s*$”
作为正则表达式
import re
rx = r".*\b([a-z]{2,})"
s = "this is very cool"
m = re.search(rx, s)
if m:
print(m.group(1))
# => cool