如何用Python正则表达式匹配文本中的独立页眉
解决多行页眉的正则匹配问题
核心问题是正则的贪婪匹配导致跨页眉抓取,只需调整匹配模式即可解决:
修改后的正则表达式
使用非贪婪匹配模式,同时保留re.DOTALL处理换行:
headers = re.finditer(r"Start of the header.*?Pg\. \d\n", self.text, flags=re.DOTALL)
关键调整点
- 将原表达式中的
.*替换为.*?:.*是贪婪匹配,会尽可能多抓取内容(从第一个页眉开头一直到最后一个页眉结尾);.*?是非贪婪匹配,会在找到第一个符合条件的Pg. 数字\n时立即停止,确保只匹配单个页眉。 - 转义
Pg.中的.:正则里.代表任意字符,必须写成Pg\.才能准确匹配文本中的Pg.。
测试效果
用你提供的示例文本测试,会分别匹配到两个独立的页眉:
Start of the header
Something inside the header
Random date
Pg. 1
以及
Start of the header
Something inside the header
Random date
Pg. 2
这样就不会把中间的正文内容包含进去了。
内容的提问来源于stack exchange,提问作者Andre Guilhon
相关产品推荐
相关产品推荐

