我正在尝试学习正则表达式,而我想解决的一项练习如下:
我有一个字符串:
"london new york"
我正在尝试与正则表达式匹配。
和模式是这样的:
r"(..o(.)).+(\2)*"
结果为ndon new york
。
据我了解,(\ 2)匹配n
,但是什么匹配ew york
?
*
中的(\2)*
还能做什么?它是否尝试匹配n
或特殊字符.
?
答案 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 ,
的每次迭代
如果匹配将有助于整个比赛,但是只有
最后的迭代将被该组保留,因为它是
内容每次都会被覆盖。