小泉app 发表于 2020-12-21 20:40:46

关于re模块入门匹配数字的不解问题

各位好,有一个问题有些不解:
import re
a = re.search(r‘1{0,1}\d{0,1}\d|2\d|25', '255')
b = re.search(r'25|1{0,1}\d{0,1}\d|2\d', '255')
print(a)
print(b)
a,b两个变量只是将25换了一下位置却得到不同的结果:
<re.Match object; span=(0, 2), match='25'>
<re.Match object; span=(0, 3), match='255'>
非常的费解,请各位大佬求解

z5560636 发表于 2020-12-22 11:16:50

import re
a = re.search(r'1{1,1}\d{0,1}\d|2\d|25', '255')
b = re.search(r'25|1{0,1}\d{0,1}\d|2\d', '255')
print(a)
print(b)


{n}   精准匹配n个前面的表达式
{n,m} 匹配n到m次由前面正则表达式定义的片段,贪婪方式
a|b   匹配a或b

小泉app 发表于 2020-12-22 11:49:50

z5560636 发表于 2020-12-22 11:16
{n}   精准匹配n个前面的表达式
{n,m} 匹配n到m次由前面正则表达式定义的片段,贪婪方式
a|b      ...

所以在第一个式子中是优先调用 1{0,1}\d{0,1}\d ,导致返回值为25 嘛?
第一个式子前面改成 1{0,1}\d{0,1}\d\d ,返回的就是255了。
好像明白了,非常感谢!
页: [1]
查看完整版本: 关于re模块入门匹配数字的不解问题