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查找整个字符串。
任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:2)
(?s)(?<=START)(?:(?!END).)*?(?:KEYWORD1|KEYWORD2)(?:.*?)(?=END)
(regex101)首先 - 我们将换行视为“任何角色”。我们在START
之后开始,在END
之前结束。在这两者之间,我们希望尽可能少的任何字符不能启动字符串END
,然后是KEYWORD1
或KEYWORD2
,然后是尽可能少的任何字符数
这是基于您拥有有限的关键字列表的假设。另一方面,如果通过其他方式识别出关键词,那么你应该首先评论Michael Butscher的评论。