如何在两个特定单词之间找到基于特定单词的字符串?

时间:2017-05-15 23:38:48

标签: python regex

Regex的新手,请帮助!

示例字符串:

START

  blahblah
  blahblah blahblah
  blahblahblahblah

  blahblah KEYWORD blah

  blahblah
  blah

END

问题:我想找到包含某个KEYWORD的整个字符串(在START和END之间)。

上下文:我有一个包含多行START * END示例字符串的多次迭代的大文件,需要根据它们包含的KEYWORD对这些字符串进行排序。每个字符串包含相同的START和END,但是包含不同的KEYWORD。

到目前为止我所拥有的:

START\s[\s\S]*?(?=END\s|\Z)    returns the entire string, but is not specific to a KEYWORD

不确定如何根据KEYWORD查找整个字符串。

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

(?s)(?<=START)(?:(?!END).)*?(?:KEYWORD1|KEYWORD2)(?:.*?)(?=END)

regex101)首先 - 我们将换行视为“任何角色”。我们在START之后开始,在END之前结束。在这两者之间,我们希望尽可能少的任何字符不能启动字符串END,然后是KEYWORD1KEYWORD2,然后是尽可能少的任何字符数

这是基于您拥有有限的关键字列表的假设。另一方面,如果通过其他方式识别出关键词,那么你应该首先评论Michael Butscher的评论。