正则表达式匹配2个字符串并包含另一个字符串

时间:2014-11-01 02:53:36

标签: regex

这是我的输入字符串

2014.10.30: b
l
ah bl
a
h  
2014.10.30: bfoo  
lah  
b  
l  
ah   
     2014.10.30: bart1  
     lah  
     baloon  
     l  
     ah  
2014.10.30: carb  
lah  
b  
l  
ah  
     2014.10.30: farb2  
     lah  
     baloon  
     l  
     ah  
2014.10.30: carb  
lah  
b  
l  
ah  
2014.10.30: bom  
lah  
baloob  
l  
ah  
etc

我想匹配以下内容(在2014年里面有baloon这个词之间):

2014.10.30: bart1  
lah  
baloon  
l  
ah  

2014.10.30: farb2  
lah  
baloon  
l  
ah  

这就是我所拥有的,

/(2014)(.*?baloon.*)(?:2014)/gsmi  

这是从2014年第一次出现的开始就匹配的。它只返回一个从下到上的匹配。 regex101这里

1 个答案:

答案 0 :(得分:1)

使用negative and positive前瞻性断言。

2014(?:(?!2014).)*?baloon.*?(?=\n2014)

DEMO

2014(?:(?!2014).)*?baloon(?:(?!2014).)*?(?=\n2014)

(?:(?!2014).)*?会匹配任何字符,但不匹配2014。这断言在2014年开始和2014

之间没有字符串baloon

DEMO