如何在括号前与前瞻匹配

时间:2012-09-27 02:27:56

标签: regex

我有这个:

aaa(bbb)

我使用此匹配(bbb)

\(.*?\)

我现在希望匹配aaa,所以我尝试了一个'积极的先行断言'。这不起作用。

(\(.*?\))(?=\()

如何匹配(之前的字母?

4 个答案:

答案 0 :(得分:3)

尝试这个,

   .*(?=\()

RegexBuddy ScreenShot

enter image description here

答案 1 :(得分:2)

在我看来,你实际上并不需要前瞻。您可以使用[^(]*来匹配第一个(

之前的所有内容
^([^(]*)

要获取()的内容和内容,请为您添加(.*?)个抓取组。

^([^(]*)\((.*?)\)

答案 2 :(得分:0)

为什么不简单地匹配/(aaa)(\(bbb\))/,然后引用与$1$2的匹配?

答案 3 :(得分:0)

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

这些强制将“aaa”括在括号中(在shell之后加上一个左括号)。你似乎想要

/(.+?)(?=\(.*?\))/