采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
import re a = 'r11er11d33' r = re.sub('(\w{3})\w\1', '\g<1>', a, 1) print(r)
想问下老师为什么这段代码的运行结果是r11er11d33,而不是r11d33呢?
另外转义字符加数字,比如 '\1' 是什么作用呢?
我觉得你应该先告诉我,为什么你认为他不应该是这样的。
我想的是,正则表达式里\1引用group1的内容,所以'(\w{3})\w\1'匹配的应该是r11er11;然后替换为group1的内容,也就是把r11er11替换为为r11,所以返回的字符串不应该是r11d33吗?
非常感谢!
你这个是贪婪匹配
这个正则表达式哪里和贪婪匹配有关系呢?\w{3}不是一定要匹配3个单词字符吗?
抱歉看错了,我觉得你这里的问题是没理解()的用法,你可以把替换先去掉,看看你的正则匹配的结果。
我用re.findall函数匹配正则表达式'(\w{3})\w\1',返回的结果是空列表,然后用r'(\w{3})\w\1'匹配的话成功返回['r11']。是不是\w和\1只有在原生字符串中才代表单词字符和group呢?
登录后可查看更多问答,登录/注册
语法精讲/配套练习+思考题/原生爬虫实战
5.7k 7
2.5k 3
2.2k 5
4.2k 22
2.4k 19