Python正则:如何在多行文本中匹配行首指定模式
匹配多行文本中指定两行的正则解法
要精准匹配这两行,核心是开启多行模式(multiline mode)——这个模式下^会匹配每一行的行首,$匹配每一行的行尾,这样你就能在单个正则里多次用^来定位不同行的开头。
匹配整行的正则示例
^TextOfInterest1.*$[\s\S]*^AnotherText-of_Interest2.*$
各部分作用:
^TextOfInterest1.*$:精准匹配以TextOfInterest1开头的整行内容[\s\S]*:匹配两行之间任意多行的无关内容(\s\S覆盖所有字符,包括换行,解决.默认不匹配换行的问题)^AnotherText-of_Interest2.*$:精准匹配以AnotherText-of_Interest2开头的整行内容
开启多行模式的方式
不同工具/语言里开启多行模式的方法略有不同:
- JavaScript:在正则后加
m标志,比如/^TextOfInterest1.*$[\s\S]*^AnotherText-of_Interest2.*$/m - Python:调用正则方法时传入
re.MULTILINE(或简写re.M)参数,比如re.search(r'^TextOfInterest1.*$[\s\S]*^AnotherText-of_Interest2.*$', 目标文本, re.M)
只提取关键词的简化正则
如果不需要匹配整行,只想提取这两个关键词本身,用这个更简洁:
^TextOfInterest1|^AnotherText-of_Interest2
开启多行模式后,会自动匹配所有以这两个字符串开头的行里的关键词。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

