正则表达式:如何捕获一组括号,而不是下一组

Regex: How to capture one set of parenthesis, but not the next

我有以下数据。

Nike.com (Nike) (Apparel)
Adidas.com (Adidas) (Footwear)
Under Armour (Accessories)
Lululemon (Apparel)

我正在尝试获取公司名称,而不是产品类型。具体来说,我想捕获

Nike.com (Nike)
Adidas.com (Adidas) 
Under Armour
Lululemon

使用这个正则表达式:

(.+? \(.+?\))

我得到以下信息:

Nike.com (Nike)
Adidas.com (Adidas)
Under Armour (Accessories)
Lululemon (Apparel)

这适用于 Nike 和 Adidas,但不适用于 Under Armour 或 Lululemon。产品类型总是在行尾。我尝试了以下但没有成功:

(.+? \(.+?\)(?!Accessories|Apparel|Footwear))

(.+? \(.+?\)(?!.*Accessories|.*Apparel|.*Footwear).*)

您似乎想获取字符串末尾带括号的子字符串。

您可以使用

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

regex demo

详情

  • ^ - 字符串开头
  • (.+?) - 第 1 组:除换行字符外的任何一个或多个字符,尽可能少
  • * - 零个或多个空格
  • \( - 一个 ( 字符
  • [^()]+ - ()
  • 以外的 1+ 个字符
  • \) - 一个 ) 字符
  • $ - 字符串结尾。