繁体   English   中英

python 正则表达式是否遵循一般到特定匹配?

[英]Does python regex follow general to specific matching?

我有以下正则表达式:

test1|test123

这仅匹配 test1 但不匹配 test123 - 我应该先指定更通用的吗? 喜欢test123|test1吗?

是的,实际上正则表达式世界中的 X|Y 意味着 X 或(不是 X 和 Y)应用于每个字符。 所以 test1|test123 永远不会匹配 test123 因为它已经匹配到 test1。

stri = "abcd"
regex1 = "(?P<group1>ab)|(?P<group2>cd)"
regex2 = "(?P<group1>ab).*(?P<group2>cd)"
y = re.match(regex1,stri)
if y:
    if y.group("group1"):
        print y.group("group1")
    if y.group("group2"):
        print y.group("group2")

第一个正则表达式 (regex1) 将只匹配 group1 因为 y 实例只能从两种情况中获取一个正则表达式匹配,显然它将采用第一个匹配项。 第二个 (regex2) 可以匹配两个组,因为这将是 group1 和 group2 的单个匹配 object。

如果您想使用“|”捕获两个组运营商本身,那么你可以这样做

regex1 = re.compile("(?P<group1>ab)|(?P<group2>cd)")
for y in regex1.finditer(stri):
    if y.group("group1"):
        print y.group("group1")
    if y.group("group2"):
        print y.group("group2")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM