鱼C论坛

 找回密码
 立即注册
查看: 1341|回复: 7

[已解决]关于正则表达式:p = re.compile(r'(\b\w+)\s+\1') 的问题

[复制链接]
发表于 2017-12-19 19:01:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> p = re.compile(r'(\b\w+)\s+\1')
>>> p.search('Paris in the the spring').group()
'the the'

这里不太明白为什么会是 'the the',
上方例子中,r’(\b\w+)\s+\1’  其中 \s 后面的 + 是针对 \s 而不是针对 (\b\w+)\s,这里如果要针对整个整体需要用小括号括起来如:((\b\w+)\s) 这样才会匹配整体;所以是匹配一次 ’(\b\w+)\s+ 这里的 \s 可以是一次也可以是多次。
        所以匹配出来的结果是 'Paris'  那么这个 'the the' 又是怎么来的呢
最佳答案
2017-12-20 10:41:38
这里最主要的原因是 \1
首先一开始匹配 (\b\w)\s+   
匹配了paris
随后,需要匹配\1
这里 \1 的值为(\b\w)的值 paris
最终需要匹配的为
paris paris
但实际paris后面跟得是in,
随后依次匹配,知道匹配到了
the the
成功匹配到 返回值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-12-19 19:14:25 | 显示全部楼层
讲的很好!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-19 21:15:29 | 显示全部楼层
\1表示 第一个小括号匹配到的内容

刚开始(\b\w+) 匹配到Paris 此时表达式可以理解为"Paris\s+Paris" 但是没有第二个Paris所以不满足表达式(\b\w+)\s+\1
当匹配到the时 此时的表达式可以理解为"the\s+the" 所以能匹配"the the"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-20 10:28:28 | 显示全部楼层
鹏程2018 发表于 2017-12-19 21:15
\1表示 第一个小括号匹配到的内容

刚开始(\b\w+) 匹配到Paris 此时表达式可以理解为"Paris\s+Paris" 但 ...

所以当子组匹配成功时第一个序号是1而不是0吗?所以引用序号为1的子组就是引用 Paris?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-20 10:32:23 | 显示全部楼层
鹏程2018 发表于 2017-12-19 21:15
\1表示 第一个小括号匹配到的内容

刚开始(\b\w+) 匹配到Paris 此时表达式可以理解为"Paris\s+Paris" 但 ...

\s 后面的那个 + 是重复 \s 这个符号一次或者多次的吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-20 10:41:38 | 显示全部楼层    本楼为最佳答案   
这里最主要的原因是 \1
首先一开始匹配 (\b\w)\s+   
匹配了paris
随后,需要匹配\1
这里 \1 的值为(\b\w)的值 paris
最终需要匹配的为
paris paris
但实际paris后面跟得是in,
随后依次匹配,知道匹配到了
the the
成功匹配到 返回值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-20 11:19:01 | 显示全部楼层
SylarPu 发表于 2017-12-20 10:41
这里最主要的原因是 \1
首先一开始匹配 (\b\w)\s+   
匹配了paris

明白了,谢谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-20 17:26:55 | 显示全部楼层
dingjie 发表于 2017-12-20 11:19
明白了,谢谢!!!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 18:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表