Python正则问题:提取含双横线的多横线间Person 2发言文本
正则表达式修改方案
问题描述
原正则表达式 regex_pattern= r"Person 2\s+\[\d+\]\s+-+\s+((?:.*?\n?)*(?=\s+-+|$))" 可提取以多横线分隔的Person 2发言,但当发言内容包含双横线 -- 时,会因误将 -- 识别为分隔线而匹配失效。
修改后的正则表达式
regex_pattern = r"Person 2\s+\[\d+\]\s+-+\s+((?:.*?\n?)*?(?=\s*-{5,}|$))"
修改说明
- 将结束断言中的
-+(匹配任意数量连续横线)调整为-{5,}(匹配至少5个连续横线),以此区分发言内容中的双横线--和转录文本中用于分隔的多横线(通常为大量连续横线) - 将匹配内容部分的
(?:.*?\n?)*改为(?:.*?\n?)*?,使用非贪婪匹配确保精准截止到分隔线位置,避免过度匹配
测试验证
针对含双横线的目标文本:
Person 2 [12]
Bla bla bla -- bla bla bla bla -- bla bla bla blaPerson 6 [13]
Bla bla bla bla bla
修改后的正则可正确提取到Person 2的完整发言:Bla bla bla -- bla bla bla bla -- bla bla bla bla
内容的提问来源于stack exchange,提问作者xxgaryxx
相关产品推荐
相关产品推荐

