正则表达式在文本匹配、模式匹配、数据清洗、表单验证、日志分析等场景下有着广泛的应用,不管你是开发人员、测试人员,或者其他任何行业从业者,只要你有处理文档的需求,掌握一点正则表达式可能会让你的工作效率大大提升。
.默认不匹配换行符
今天使用python语言来介绍一个非常简单的例子,下面这个例子搜索这样的模式,从hello起始,中间可以是任何字符,之后匹配world。r"hello.*world"中的逗点.表示匹配任意字符,*号表示匹配零次或者更多次。
import re
string = "hello world"
result = re.search(r"hello.*world", string)
print(result.group())
运行上面的脚本结果如下,string字符中搜索到了预期的模式。
>>> import re
>>> string = "hello world"
>>> result = re.search(r"hello.*world", string)
>>> print(result.group())
hello world
接着我们把string从单行改为跨行,脚本其他部分不变
import re
string = """hello
world"""
result = re.search(r"hello.*world", string)
print(result.group())
再次运行脚本报错,这是因为没有搜索到预期的模式导致result为None引起的,从这个结果我们可以判断出逗点.*显然没有匹配跨行的情况。
>>> import re
>>> string = """hello
...
... world"""
>>> result = re.search(r"hello.*world", string)
>>> print(result.group())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
进一步查询正则表达式的匹配字符规则也可以发现确实如此。
re.DOTALL
我们也可以参考上图给出的方案使用(.|\r|\n)*的方式匹配任意字符包括换行符,但是python还有更方便的处理方法,就是配置re.DOTALL可选模式。
在re.search中增加re.DOTALL选项
import re
string = """hello
world"""
result = re.search(r"hello.*world", string, re.DOTALL)
print(result.group())
再次运行有成功搜索到了预期的模式,可以匹配跨行的情况了。
>>> import re
>>> string = """hello
...
... world"""
>>> result = re.search(r"hello.*world", string, re.DOTALL)
>>> print(result.group())
hello
world
参考文献
[1]. https://docs.python.org/zh-cn/3/howto/regex.html#matching-characters
[2]. https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F
以上就是“你知道python正则表达式如何跨行匹配吗?”的全部内容,希望对你有所帮助。
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、Python练习题
检查学习结果。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。