不懂Python中的(?(id\name)yes-pattern|no-pattern)正则语法,求解

小笨同学 2012-07-16 08:05:29
在看Python 2.7.3文档时,看到re库,之前也了解过正则表达式,但是一直没有系统学习,最近有时间,想好好补下,在看到(?(id/name)yes-pattern|no-pattern)这个正则语法时,出现问题了:


import re
# 测试(?(id)yes-pattern|no-pattern)
>>>re.match(r'(a)(?(1)b|c)', 'ab') # group(1)存在,则为yes-pattern('b'), 匹配字符串'ab',匹配成功,结果也显示也是成功
<_sre.SRE_Match object at 0x01790C20>
>>>re.match(r'(a)(?(1)b|c)', 'c') #group(1)不存在,则为no-pattern('c'),匹配字符串为"c",应该是匹配的,可为实际结果却不匹配
#nothing

问题:(?(id)yes-pattern|no-pattern)中的no-pattern如何使用?
...全文
322 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
小笨同学 2012-07-17
  • 打赏
  • 举报
回复
re.match(r'(a)(?(1)b|c)', 'c') 改成
re.match(r'(a)?(?(1)b|c)', 'c')就可以成功匹配了,看来我还是没搞懂匹配成功与否与group之间的关系,不过现在稍懂了些了。
bugs2k 2012-07-16
  • 打赏
  • 举报
回复
即使匹配不成功,但是这个位置也得有个字符吧

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧