Захватить строку, содержащую '(' и ')', используя регулярное выражение - PullRequest
0 голосов
/ 15 апреля 2020

Я хотел бы захватить всю строку, которая появляется после 'Value -' до 'TestRun' в захвате группы, используя приведенное ниже выражение, но оно не учитывает литерал ')'. Как записать строку до 'TestRun'?

Регулярное выражение:

Value - ([\\\w-:_.*\(\)]+)\s

Текст:

Value - F:\TEMP\Radio\5\M\Try_Remove\6( alt )\TestRun End

1 Ответ

1 голос
/ 15 апреля 2020

Шаблон, который вы пробовали, не соответствует пробелу и прекратит поиск после открывающей скобки.

Например, вы можете сопоставить то, что разрешено в классе символов без круглых скобок, или совпадение из открывающих закрывающих скобок, используя группу без захвата и квантификатор.

Value - ([\\\w:_.*-]+(?:\([^()]*\)[\\\w:_.*-]*)*)\s

Пояснение

  • Value - Совпадение буквально
  • ( Захват группа 1
    • [\\\w:_.*-]+ Совпадение 1+ раз любое
    • (?: Группа без захвата
      • \([^()]*\)[\\\w:_.*-]* Совпадение с ( .. ) и 0+ раз с любым из перечисленных
    • )* Закрыть группу и повторить 0+ раз
  • ) Закрыть группу 1
  • \s Соответствовать символу пробела

Regex demo (Щелкните вкладку Таблица, чтобы увидеть значение группы)

Более широкий шаблон должен соответствовать до последнего вхождения /, а затем соответствовать следующему символы без пробелов

Value - (.*\\\S+)\s

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...