如何深入探讨Python的多行匹配模式应用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计655个文字,预计阅读时间需要3分钟。
问题+你在试用使用正则表达式去匹配一大块文本,而你需要跨越多行去匹配。解决方案+这个问题的解决方案非常典型。当你使用点号(.)去匹配任意字符时,它会忽略行边界。因此,当你需要跨行匹配时,记得使用点号(.)时,不需要加上行结束符(\n)。
问题
你正在试着使用正则表达式去匹配一大块的文本,而你需要跨越多行去匹配。
解决方案
这个问题很典型的出现在当你用点(.)去匹配任意字符的时候,忘记了点(.)不能匹配换行符的事实。比如,假设你想试着去匹配C语言分割的注释:
>>> comment = re.compile(r'/\*(.*?)\*/') >>> text1 = '/* this is a comment */' >>> text2 = '''/* this is a ... multiline comment */ ... ''' >>> >>> comment.findall(text1) [' this is a comment '] >>> comment.findall(text2) [] >>>
为了修正这个问题,你可以修改模式字符串,增加对换行的支持。
本文共计655个文字,预计阅读时间需要3分钟。
问题+你在试用使用正则表达式去匹配一大块文本,而你需要跨越多行去匹配。解决方案+这个问题的解决方案非常典型。当你使用点号(.)去匹配任意字符时,它会忽略行边界。因此,当你需要跨行匹配时,记得使用点号(.)时,不需要加上行结束符(\n)。
问题
你正在试着使用正则表达式去匹配一大块的文本,而你需要跨越多行去匹配。
解决方案
这个问题很典型的出现在当你用点(.)去匹配任意字符的时候,忘记了点(.)不能匹配换行符的事实。比如,假设你想试着去匹配C语言分割的注释:
>>> comment = re.compile(r'/\*(.*?)\*/') >>> text1 = '/* this is a comment */' >>> text2 = '''/* this is a ... multiline comment */ ... ''' >>> >>> comment.findall(text1) [' this is a comment '] >>> comment.findall(text2) [] >>>
为了修正这个问题,你可以修改模式字符串,增加对换行的支持。

