代码之家  ›  专栏  ›  技术社区  ›  Valamas ConsultUtah

如何将括号前的内容与先行查找相匹配

  •  1
  • Valamas ConsultUtah  · 技术社区  · 13 年前

    我有这个:

    aaa(bbb)
    

    我匹配的 (bbb) 使用此:

    \(.*?\)
    

    我现在想匹配 aaa 所以我尝试了一个“积极的前瞻性断言”。这不起作用。

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

    我怎样才能匹配前面的字母 ( ?

    4 回复  |  直到 13 年前
        1
  •  3
  •   John Woo    13 年前

    试试这个,

       .*(?=\()
    

    RegexBuddy屏幕截图

    enter image description here

        2
  •  2
  •   Michael Berkowski    13 年前

    在我看来,你实际上并不需要展望未来。你可以使用 [^(]* 匹配第一个之前的所有内容 (

    ^([^(]*)
    

    获取它和 () ,添加您现有的 (.*?) 捕获组。

    ^([^(]*)\((.*?)\)
    
        3
  •  0
  •   Sean Vieira    13 年前

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

        4
  •  0
  •   Bergi    13 年前
    (\(.*?\))(?=\()
     ^^  ^^
    

    这些强制将“aaa”括在括号中(后面是一个开口括号)。你似乎想要

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