老猿做过如下测试:
>>> re.search(r'*{3,100}','*****')
>>> re.search('*{3,100}','*****')
>>>
- 1
- 2
- 3
- 4
- 5
这二者的区别就是正则表达式前一个加了原始字符串标记r,一个未加,老猿开始理解原始字符串形式和非原始字符串形式在反斜杠的处理上应该不同,这两个的搜索结果就应该不一样,但最终为什么一致呢?
原因就在于字符串形式的正则表达式处理时,会先进行字符串转义处理,再进行正则表达式转义处理,而字符串转义处理时“*”
不被识别,因此保持原串信息传递给了正则表达式转义,也就是”*”与r”*”
是同样的字符串。在Python中也可以直接验证,如下:
>>> "*"==r"*"
True
>>>
- 1
- 2
- 3
所以这两个正则表达式的匹配结果完全相同。
老猿Python,跟老猿学Python!
博客地址:http://iyenn.com/index/link?url=https://blog.csdn.net/LaoYuanPython
请大家多多支持,点赞、评论和加关注!谢谢!
文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览333550 人正在系统学习中

老猿Python
微信公众号
专注Python相关语言、图像音视频处理、AI


评论记录:
回复评论: