在第一个冒号之前出现的最后左括号之前提取文本

时间:2015-03-19 13:47:32

标签: regex

我的叮咬包含冒号和许多括号。以下是一些例子:

hello(string1)(string2):string3:string4
foo(string1):string2
foo(string1)(string2):(string3)

我想要在左括号出现在第一个冒号之前的所有字符串内容。上述字符串示例的输出必须如下所示:

hello(string1)
foo
foo(string1)

我使用^.*?(?=:)来获取第一个冒号(:)之前出现的所有内容。现在我需要在最后一个左括号(之前获取所有内容。

3 个答案:

答案 0 :(得分:2)

您可以使用^.*?(?=\([^\)]+\):)

请注意,此要求 :存在(至少在结尾处)。如果没有冒号,则没有(.):,就不会有匹配。

http://rubular.com/r/0n5Ch2bDFZ

答案 1 :(得分:1)

尝试以下正则表达式:

^.*(?=\(.*\):)

它匹配\(.*\):后跟的任何字符,这就是你想要的。

答案 2 :(得分:0)

你几乎就在那里。

以下是查找括号后跟冒号的前瞻:(?=\([^)]*\):)