正则表达式捕获一个单词出现之间的所有事情

时间:2015-02-16 06:14:58

标签: regex

我想要一个正则表达式来捕捉特定单词hello出现的所有内容。 左包容和右包排。 hello all everything hello evehello all everythinghello eve

我使用的hello.*(?=hello)使用Here的引用,请参阅Demo。但它只匹配一次,我尝试了一些可能没有运气。有可能吗?

输入:

hello i am xyz lol hello i
am abc ..;sda<>
hello
i am pqr ahe kiop hello
abc axyz
no
yes 
hepdd
jol
hello
podjkd
dasfh

预期输出:

1:hello i am xyz lol

2:hello i
am abc ..;sda<>

3:hello
i am pqr ahe kiop

4:hello
abc axyz
no
yes 
hepdd
jol

5:hello
podjkd
dasfh

1 个答案:

答案 0 :(得分:1)

您需要在此正则表达式中使用s(DOTALL)标志:

/(hello.*?)(?=hello|\z)/gmsi

RegEx Demo

  • \z将匹配多行文字中的最后一个字符。
  • 使用s 时,
  • .*?也会匹配换行符
  • .*?用于非贪婪的正则表达式