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

2018-11-20 16:07:55 +08:00
 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 具体是什么意思,向后重复匹配的意思吗?

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

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

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

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

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

© 2021 V2EX