请问行家,正则中的“\1”怎么正确的理解

2018 年 11 月 20 日
 joyc

官方手册中如下:

>>> import re
>>> re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
['foot', 'fell', 'fastest']
>>> re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')
'cat in the hat'

我知道第一个中的\b是单词边界,那么第二个中的\1 具体是什么意思,向后重复匹配的意思吗?

2682 次点击
所在节点    Python
9 条回复
uTOmOuk3L6sb4MSI
2018 年 11 月 20 日
就是重复匹配的$1 内容????
Ho
2018 年 11 月 20 日
这里是匹配第一个捕获组
uTOmOuk3L6sb4MSI
2018 年 11 月 20 日
al0ne
2018 年 11 月 20 日
正则表达式反向引用 我理解的是\1 可以代表前面括号匹配到的内容
uTOmOuk3L6sb4MSI
2018 年 11 月 20 日
joyc
2018 年 11 月 20 日
@Ho
@al0ne
@ODD10
正解啊,确实如此,匹配第一个捕获组,谢谢。
katsusan
2018 年 11 月 20 日
\1 应该是引用第一个分组(\b[a-z]+)
jdhao
2018 年 11 月 20 日
这个再 regex 里面叫 capture group,更多细节 Google "capture group regex"
flowfire
2018 年 11 月 21 日
就是$1,只不过一个是放在正则表达式里,一个是放在后面的替换字符里

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/509669

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX