【发布时间】:2019-02-09 17:25:04
【问题描述】:
我有以下文本,我正在尝试使用此模式在匹配项的每一侧提取 25 个单词。挑战在于匹配重叠,因此 python 正则表达式引擎只需要一个匹配。如果有人可以帮助解决此问题,我将不胜感激
文字
2015 年展望 本公司目前提供以下 2015 年展望以代替正式的财务指引。该展望不包括任何未来收购和交易相关成本的影响。收入 - 根据 2014 年第四季度的收入、我们一些设施的新项目的增加以及之前对重要场所的收购,公司预计当前 100 项的利用率将保持在某个平均水平
我尝试了以下模式
pattern = r'(?<=outlook\s)((\w+.*?){25})'
这会创建一个匹配,而我需要两个匹配,并且一个是否与另一个重叠并不重要
我基本上需要两根火柴
【问题讨论】:
-
你试过re.findall吗?
-
这里的预期匹配是什么?
-
你必须为此使用正则表达式吗?
-
我不必使用正则表达式,但我愿意。预期匹配是两个字符串,在“outlook”之后包含 25 个单词,因为有 2 个前景。
-
试试
re.findall(r'(?=outlook\s+(\w+(?:\W+\w+){25}))', s)。如果少于 25 个单词,请将{25}替换为{1,25}甚至{0,25}。
标签: python regex python-3.x regex-lookarounds