Python \2正则表达式中的平均值

Python \2正则表达式中的平均值,python,regex,Python,Regex,据我所知\2代表第2组的内容 因此,表达式r'(\w*)(\w)\2'应该返回group2的内容(即\w) 但当我们使用具有重复字符的单词时,它返回的是重复字符。 例如: 在第一个示例中,输出为“l”而不是“y” 有人能告诉我\2在正则表达式中的确切含义吗?我的理解哪里是错误的。这是对第二个捕获组的“引用”。因此,这意味着重复第二捕获组中的内容 例如,对于这个正则表达式,'finally'和'finallyy'匹配如下: (\w*) (\w) \2 <rest> fina

据我所知\2代表第2组的内容

因此,表达式
r'(\w*)(\w)\2'
应该返回group2的内容(即
\w
) 但当我们使用具有重复字符的单词时,它返回的是重复字符。 例如:

在第一个示例中,输出为“l”而不是“y”

有人能告诉我\2在正则表达式中的确切含义吗?我的理解哪里是错误的。

这是对第二个捕获组的“引用”。因此,这意味着重复第二捕获组中的内容

例如,对于这个正则表达式,
'finally'
'finallyy'
匹配如下:

(\w*) (\w) \2    <rest>
fina   l   l     y
finall y   y
(\w*)(\w)\2
最后
最后
由于Kleene星是贪婪的,它通常会吃掉尽可能多的字符,但仍然匹配字符串

因此简而言之,如果第二个捕获组将匹配
foo
,那么
\2
也必须能够匹配
foo


严格地说,这样的构造并不总是正则表达式(至少在严格的数学意义上不是):正则表达式只能匹配正则语言,并且正则语言应该可以由有限状态机解析。例如,如果第二组可以匹配任意数量的字符(例如与
(\w+)\1
),则不能在有限状态机上对其进行编码。

因此,这意味着第二组中的字符重复。因此,这与字符重复两次(或更多)的字符串相匹配。
\2
表示第二个捕获组-
(\w)
。给定的模式搜索后跟重复字母的字符串。因此,
\1
匹配
fina
\2
匹配
ll
(\w*) (\w) \2    <rest>
fina   l   l     y
finall y   y