您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python,正则表达式,命名组和“逻辑或”运算符

5b51 2022/1/14 8:21:17 python 字数 1754 阅读 464 来源 www.jb51.cc/python

在python正则表达式中,命名和未命名组都使用'('和')'定义.这导致了一种奇怪的行为.正则表达式'(?P<a>1)=(?P<b>2)' 与文本“1 = 2”一起使用时,将找到值为“1”的命名组“a”,并将值“2”命名为组“b”.但是,如果我想使用“逻辑或”运算符并连接多个规则,请使用以下正则表达式:'((?P<a>1

概述

python正则表达式中,命名和未命名组都使用'(‘和’)’定义.这导致了一种奇怪的行为.正则表达式

"(?P
  

与文本“1 = 2”一起使用时,将找到值为“1”的命名组“a”,并将值“2”命名为组“b”.但是,如果我想使用“逻辑或”运算符并连接多个规则,请使用以下正则表达式:

"((?P
  

使用相同文本“1 = 2”将找到一个值为“1 = 2”的未命名组.我知道regexp引擎会将“(”和“)”视为一个未命名的组,并将“a”和“b”组合在一起,并报告它已找到.但我不希望报告一个未命名的组,我只想使用“|”为了将多个正则表达式“粘合”在一起.没有创建任何寄生的未命名组.这是在python中这样做的方法吗?

r"(?:(?P
  

re的文档:

(?:…) A non-grouping version of
regular parentheses. Matches whatever
regular expression is inside the
parentheses,but the substring matched
by the group cannot be retrieved after
performing a match or referenced later
in the pattern.

顺便说一下,交替运算符|优先级非常低,以便在像你这样的情况下不需要括号.您可以在正则表达式中删除额外的括号,它将继续按预期工作:

r"(?P
  

总结

以上是编程之家为你收集整理的python,正则表达式,命名组和“逻辑或”运算符全部内容,希望文章能够帮你解决python,正则表达式,命名组和“逻辑或”运算符所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶