正则表达式在字符串之间查找文本,中间没有预定义的字符串

时间:2012-08-10 15:17:11

标签: regex string find regex-negation

我写了一篇文字:

11 bla gulp bla 22
11 bla bla bla 2211 bla 
ble
bli 22

我需要一个正则表达式来查找所有情侣“11”和“22”之间的所有文字但是不要包含“gulp”。

如果我使用TextCrawler搜索(?s)11.*?22,我会找到所有三个字符串:

bla gulp bla
bla bla bla
bla ble bli

错误!我只想获得:

bla bla bla
bla ble bli

因为“bla gulp bla”包含“gulp”,我不想要它!

有什么想法吗? : - )

1 个答案:

答案 0 :(得分:1)

使用否定先行断言:

11(?!.*?gulp.*?)(.*?)22

单词边界可能是中间的好主意(围绕gulp),因为它可以区分gulpgulpinggulped或{{1 }}(?):

ungulp

但把它们放在一切:

11(?!.*?\bgulp\b.*?)(.*?)22

会排除你的其他两个结果 - 而不是你想要的结果。