找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4195|回复: 2

[求助] 帮我看看这两个正则表达式:

1

主题

9

帖子

9

积分

贫民

积分
9
QQ
Adapter|S 发表于 2017-5-3 17:00:01 | 显示全部楼层 |阅读模式
text = 'I am go back home now.'
r = re.findall(r'\b.*?k\b', text)
前面这一个正则表达式为什么不能找出text中的以k结尾的back

r = re.findall(r'\b\w*?k\b', text)
后面这个正则表达式我明白
就是前面的正则表达式为什么不能匹配到back的前面的单词边界

但是如果用r = re.findall(r'\bb.*?\b', text)也能匹配到到back 这个跟第一个正则表达式就是要求变了一点

求解释下里面的细节

回复

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb 发表于 2017-5-3 17:54:25 | 显示全部楼层
r = re.findall(r'\b.*?k\b', text) ,
\b 匹配单词边界,上来就匹配到了字符串的开始,也就是 I am 这句话的开头,
然后.*?以非贪婪匹配任意字符,也就是可以匹配到符合k之前最少数量的字符,
然后k就是明确的匹配k了,
然后又是\b 单词边界,也就是刚好到k的后面结束,
整个目标字符串里面也就只有这么一个符合条件的子字符串,“I am go back”,
建议改为r = re.findall(r'\b\w*?k\b', text),这样就只会匹配到单词,而不会是中间夹杂着空格的一段句子
回复 支持 反对

使用道具 举报

1

主题

9

帖子

9

积分

贫民

积分
9
QQ
Adapter|S  楼主| 发表于 2017-5-3 18:20:28 | 显示全部楼层
谢谢懂啦
回复

使用道具 举报

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

本版积分规则

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