在阅读python regex模块时,(?P<name>...)
通常使我感到困惑。
我从答案python - Named regular expression group "(?Pregexp)": what does "P" stand for? - Stack Overflow那里知道P
的标准只是随机事物,如foo
bar
zoo
(?P<name>...)
与常规括号类似,但是可以通过符号组名来访问与组匹配的子字符串。组名必须是有效的Python标识符,并且每个组名必须在一个正则表达式中仅定义一次。符号组也是带编号的组,就像未命名该组一样。
可以在三个上下文中引用命名组。如果模式是(?P ['“])。*?(?P = quote)(即匹配用单引号或双引号引起来的字符串):
错误通常会在re.sub
的repl参数中使用\g<quote>
。
自从我尝试成为pythonic并向其他人解释了根本问题。
为什么在\g<quote>
中使用g而不是p?为什么不在(?P<name>...)
中使用G?
所以会有一些混乱之余。