python正则表达式“\1”

2024-05-19 17:38:53 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能告诉我在下面的Python正则表达式中“\1”是什么意思吗?

re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')

谢谢!


Tags: theinrehatcat
3条回答

\1相当于re.search(...).group(1),正则表达式中的第一个括号分隔的表达式。

有趣的是,这也是正则表达式在Python和其他编程语言中比required to be by CS theory慢得多的部分原因。

第一个\1表示第一个组,即第一个括号表达式(\b[a-z]+)

docs\number

“匹配同一号码组的内容。组从1开始编号。例如,(.+)\1匹配“the”或“5555”,但不匹配“thethe”(请注意组后面的空格)

在你的例子中,它是在寻找一个重复的“单词”(好吧,一组小写字母)。

第二个\1是匹配时使用的替换,因此重复的单词将被单个单词替换。

\1是反向引用。 它匹配您方括号中匹配的内容,在本例中是the

你基本上是说

  • 匹配单词开头的空字符串(\b)
  • 匹配a-z中的字母字符,一次或多次
  • 再次匹配括号中的术语

猫在帽子里

相关问题 更多 >