|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
*号匹配结果让我很疑惑
为什么对重复的字符串返回的结果是0次(例如‘abxxxb’,用‘x*’匹配出来的却是空字符,这一点都不贪婪啊)
而对HTML/XML的内容<....><.....><....>匹配却表现出贪婪呢
本帖最后由 ba21 于 2017-8-23 09:54 编辑
* 匹配前面的子表达式 零次或多次,等价于 {0,}
+ 匹配前面的子表达式 一次或多次,等价于 {1,}
例如 ca*t 将匹配 ct(0 个字符 a),cat(1 个字符 a),caaat(3 个字符 a)
没问题,很好理解
- >>> re.search(r"x*","abxxxb")
- <_sre.SRE_Match object; span=(0, 0), match=''>
- >>> re.search(r"x+","abxxxb")
- <_sre.SRE_Match object; span=(2, 5), match='xxx'>
- >>> re.search(r"ca*t","ct")#匹配a 0次
- <_sre.SRE_Match object; span=(0, 2), match='ct'>
- >>> r=re.search(r"ca*t","ct")
- >>> r.group()
- 'ct'
- >>> re.search(r"ca*t","cat")#匹配a 1次
- <_sre.SRE_Match object; span=(0, 3), match='cat'>
- >>> r=re.search(r"ca*t","cat")
- >>> r.group()
- 'cat'
- >>> re.search(r"ca*t","caaat")#匹配a 3次
- <_sre.SRE_Match object; span=(0, 5), match='caaat'>
- >>> r=re.search(r"ca*t","caaat")
- >>> r.group()
- 'caaat'
- #所以你按你的思中可以写成这样。
- >>> re.search(r"bx*","abxxxb")
- <_sre.SRE_Match object; span=(1, 5), match='bxxx'>
- >>> re.search(r"abx*b","abxxxb")
- <_sre.SRE_Match object; span=(0, 6), match='abxxxb'>
- >>> re.search(r"x*b","abxxxb")
- <_sre.SRE_Match object; span=(1, 2), match='b'>
- >>> re.search(r"ax*b","abxxxb")
- <_sre.SRE_Match object; span=(0, 2), match='ab'>
复制代码
|
|