如何提取两个不同匹配项之间的文本?

2024-04-26 10:40:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,其中包含需要提取的文本集,如下所示:

ITEM A blah blah blah ITEM B bloo bloo bloo ITEM A blee blee blee ITEM B

以下是我目前掌握的工作代码:

^{pr2}$

我知道我可以使用span、start和end等命令来查找匹配项的文本位置。但我需要做很多次,所以我需要的是:

  1. 从A项开始书写,在B项停止书写
  2. 如果第一次迭代的长度小于50个字符,则丢弃并移到下一个迭代
  3. 一旦你找到一个以项目a开始,以项目B结束,并且超过50个字符的集合,就把它写到一个文件中

先谢谢你!我已经转了一段时间了。在


Tags: 项目代码文本命令itemstartendspan
2条回答

为什么不只是:

with open(fname, 'w') as file:
    for match in re.finditer(r'Item A(.+?)Item B', subject, re.I):
        s = match.group(1)
        if len(s) > 50:
            file.write(s)

注意:使用标志的实际数值是相当倾斜的,请使用re标志中提供的。在

这可以在单个正则表达式中完成:

with open("output.txt", "w") as f:
    for match in re.finditer(r"(?<=Item\sA)(?:(?!Item\sB).){50,}(?=Item\sB)", subject, re.I):
        f.write(match.group()+"\n")

这将匹配项目A和项目B之间的内容。或者是否也要匹配分隔符?在

regex解释说:

^{pr2}$

相关问题 更多 >