设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 5191|回复: 0
打印 上一主题 下一主题

56课课后习题

[复制链接]

0

主题

0

好友

130

积分

注册会员

Rank: 2

楼主
发表于 2019-10-6 02:40:51 |显示全部楼层
本帖最后由 delapi 于 2019-10-6 04:47 编辑

终于搞懂了,\bs\S*?e\b表示的是在文本中搜索一个回退符+s\S*?e+一个回退符,回退符\x08本身是占位置的,而不是我想的直接删除前面的字母

--------------------------------------------------------------------

我有点不太理解这个,如果说r"\bs\S*?e\b"这个正确可以理解,因为他先保证不转义,然后到正则表达时再转义。
可“\bs\S*?e\b”即便是在正则表达拿到规则前就转义了,可是用这个s\S*?e作为规则也不应该是no match啊(我试了m = re.findall(r's\S*?e', text)是可以搜到结果['site', 'se', 'sue', 'swe', 'se', 'se', 'sse', 'sse', 'se']的 )
我刚刚试了一下print(‘\bs\S*?e\b’)得到的并不是s\S*?e而是s\S*?(其实有点奇怪的是为什么S前面的反斜杠没有消去),我以为我搞懂了因为在正则表达之前转义\b会用python的规则当成回退符而非单词边界,可是按这个道理:
1.我在\b的前面随便输入一个新的字符(比如我试了‘a\bs\S*?ea\b'和‘\bs\S*?ea\b)应该就可以得到结果,但还是no match。
2.我试了m = re.findall(r's\S*?', text),也可以得到结果['s', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's', 's']而非no match
所以我现在确实被搞糊涂了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-18 08:03 , Processed in 0.016551 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部