如何使用regex正则表达式提取文本中---分隔符后的指定段落内容
实现方案
核心思路
你原有正则逻辑过于复杂,且没有正确处理内容边界和前置垃圾文本过滤。我们直接定位---分隔符后的内容,通过正向预查限定内容的结束边界,自动过滤掉前置无效内容。
正则说明
使用的正则表达式为:r'---\n(.*?)(?=\n\( \d{4}-\d{2}-\d{2}|\Z)',搭配re.DOTALL标志实现跨行匹配:
---\n:精准匹配分隔符及后续换行,定位内容起始位置(.*?):非贪婪匹配所有字符,作为提取结果的唯一分组(?=\n\( \d{4}-\d{2}-\d{2}|\Z):正向预查,匹配到下一个时间行开头或者文本末尾就停止,避免包含后续的时间、标识等无关内容
完整代码示例
import re # 替换为你的原始文本变量 raw_text = "你的原始文本内容" # 提取结果 paragraphs = re.findall(r'---\n(.*?)(?=\n\( \d{4}-\d{2}-\d{2}|\Z)', raw_text, flags=re.DOTALL) # 可选:去除每个段落前后的空白换行 clean_paragraphs = [para.strip() for para in paragraphs] # 输出结果,clean_paragraphs 就是所有---后的段落列表 print(clean_paragraphs)
效果说明
运行后你将得到一个列表,每个元素对应一个---后的段落内容,自动忽略了所有前置的无效垃圾文本,不需要额外做过滤处理。
内容的提问来源于stack exchange,提问作者UnbreakableMystic
相关产品推荐
相关产品推荐

