正则表达式反向引用乘法

时间:2019-05-06 16:11:01

标签: python regex backreference quantifiers

我正在尝试学习正则表达式,而我想解决的一项练习如下:

我有一个字符串:

    "london new york" 

我正在尝试与正则表达式匹配。

和模式是这样的:

    r"(..o(.)).+(\2)*"

结果为ndon new york

据我了解,(\ 2)匹配n,但是什么匹配ew york*中的(\2)*还能做什么?它是否尝试匹配n或特殊字符.

1 个答案:

答案 0 :(得分:0)

这样看

 (                             # (1 start)
      . . o
      ( . )                         # (2)
 )                             # (1 end)
 ( .+ )                        # (3)
 ( \2 )*                       # (4)

 **  Grp 0 -  ( pos 2 : len 13 ) 
ndon new york  
 **  Grp 1 -  ( pos 2 : len 4 ) 
ndon  
 **  Grp 2 -  ( pos 5 : len 1 ) 
n  
 **  Grp 3 -  ( pos 6 : len 9 ) 
 new york  
 **  Grp 4 -  NULL 

您可以看到第4组始终为空。
第4组始终为空,因为第3组占用了所有
air 不在当前行的其余部分,从不
可选第4组 保留任何内容。


上使用量词*+时,仍必须小心 捕获组。那是因为 group
的每次迭代 如果匹配将有助于整个比赛,但是只有
最后的迭代将被该组保留,因为它是
内容每次都会被覆盖。