正则表达式
贪婪模式和非贪婪模式的匹配范围搞不清楚,比如下面的代码s = "This is a number 234-235-22-423"
r = re.match("(.+)(\d+-\d+-\d+-\d+)", s)
print(r.group(1))
>>> This is a number 23
r = re.match("(.+?)(\d+-\d+-\d+-\d+)", s)
print(r.group(1))
>>> This is a number
贪婪模式的尽可能多匹配和非贪婪模式的尽可能少匹配怎么理解,谢谢
{:10_243:}
什么贪婪非贪婪{:10_269:}{:10_269:} 本帖最后由 suchocolate 于 2021-1-24 13:36 编辑
import re
st = 'fish is good, fishc.com is very good.'
print(re.match(r'fish(.*)good', st))
print(re.match(r'fish(.*?)good', st))
>>>
================ RESTART: C:/Users/admin/Desktop/testre.py ================
<_sre.SRE_Match object; span=(0, 36), match='fish is good, fishc.com is very good'>
<_sre.SRE_Match object; span=(0, 12), match='fish is good'>
>>> 本帖最后由 Stubborn 于 2020-7-19 22:08 编辑
贪婪模式->多配呗,非贪婪就少配呗
"(.+)(\d+-\d+-\d+-\d+)" 在满足第二正则式,第一正则式会多配,配到4- 之前 ,在配,第二正则式就没有结果了
"(.+?)(\d+-\d+-\d+-\d+)"满足第二正则式,其余全部给第一正则式了。
页:
[1]