内容:
在Perl中运行正则表达式匹配时,$1
、$2
可用作从匹配中捕获的正则表达式引用的引用,类似地,在Python中,\g<0>
、\g<1>
可用作
Perl还有一个$+
特殊引用,它引用具有最高数值的捕获组
我的问题:
Python是否有$+
的等价物?
我尝试了\g<+>
,并尝试在文档中查找,其中只说:\g<name>
将使用与名为name
的组匹配的子字符串,而\g<number>
使用相应的组号。因此,\g<2>
等效于\2
。但在替换字符串(如\g<2>0
)中不会有歧义。(\20
将被解释为对组20的引用,而不是对组2后跟文字字符'0'
的引用。)以下替换都是等效的,但使用替换字符串的所有三种变体。
2条答案
按热度按时间olqngx591#
简而言之,使用分支reset
(?|(pA)|(pB)|(pC))
,整个模式是 * 一个 * 捕获组(有三个交替),而不是三个。因此,您始终知道哪个是“最后”捕获,因为只有一个捕获。这也可以用于命名的捕获组。随着
(?|...)
中的模式变得越来越复杂,这个特性增加了更多的功能和用途。请在您喜欢的regex文档中找到它。例如,这里是in regular-expressions.info,这里是一些Perl资源,perlre和The Effective Perler。eiee3dmh2#
在大多数情况下,您只需在交替期间使用一次捕获。
在更复杂的情况下,您可以过滤掉
None
结果。