Regex: как записать один набор скобок, но не следующий - PullRequest
1 голос
/ 13 апреля 2020

У меня есть следующие данные.

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

Я пытаюсь получить название компании, но не тип продукта. В частности, я хочу захватить

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

Используя этот RegEx:

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

Я получаю следующее:

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

Это работает для Nike и Adidas, но это не работает для Under Armour или Lululemon. Тип продукта всегда будет в конце строки. Я пробовал следующее безуспешно:

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

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

1 Ответ

2 голосов
/ 13 апреля 2020

Похоже, вы хотите получить все до заключенной в скобки подстроки в конце строки.

Вы можете использовать

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

См. Демонстрационный пример regex

Подробности

  • ^ - начало строки
  • (.+?) - Группа 1: любой один или несколько символов, кроме перевода строки символов, как можно меньше
  • * - ноль или более пробелов
  • \( - ( char
  • [^()]+ - 1+ символов кроме ( и )
  • \) - ) char
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...