如何使用正则表达式匹配字符串后跟一些关键字和多行

how to use regular expression to match strings followed by some keyword and multiple lines

我有这样的字符串:

...
xxxx
xxx

keyword1 xxxxx
xxxx
xxxx
xxxxx keyword2 yyyy
xxx
xxxx

xxx
...

其中 x 和 y 只是随机字符。我需要匹配keyword1后出现的第一个"keyword2 yyyy",keyword1后可能有多行。如何编写正则表达式?谢谢!

你可以使用这个正则表达式,

^(?s).*keyword1.*?(keyword2 yyyy).*$

解释:

  • ^ --> 字符串开头
  • (?s) --> 使点匹配新行
  • .* 关键字 1.*? --> 匹配包含 keyword1 的字符串,其前后是任何进行非贪婪匹配的字符
  • (keyword2 yyyy) --> 匹配您感兴趣的字符串
  • .*$ --> 后跟任意字符,最后是输入结束

Demo