匹配一切直到一系列角色,没有系列本身?

时间:2012-03-11 12:47:08

标签: regex

我正在尝试从字符串中提取部分文本。我需要先抓取所有字符" (test)" 第一个出现之前(注意第一个括号前的空格),但不包括" (test)"部分本身。

我正在测试的字符串:

"14 asdasddasddasdas twetwe .e.wrwe r342#¤¤¤¤ 822 (test) (test) (test)"

我正在使用模式^.+(?= \(test\)),但显然这会匹配所有内容,直到最后 " (test)"出现。我希望它匹配字符串:

 "14 asdasddasddasdas twetwe .e.wrwe r342#¤¤¤¤ 822 "

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

+符号表示“一次或多次 - 最好是尽可能多次”。 (这是“贪婪的”。)你需要使用特殊的“nongreedy”或“懒惰”等同物,+?,这意味着“一次或多次 - 最好是几次次”。 (注意:不要混淆使用?表示“零或一次 - 并且比零更好一次”。)因此,您的模式将是:

^.+?(?= \(test\))