Вы можете использовать следующее регулярное выражение для преобразования совпадений в пустые строки. (Я избежал начального пробела просто для удобства чтения.)
\ +\((?!.* \)).*
Преобразованная строка, вероятно, является тем, что вы хотите, поэтому, похоже, нет смысла сохранять ее в группе захвата. Если вам нужно захватить часть строки, которая преобразована в пустую строку, замените .*
на (.*)
.
Поскольку это регулярное выражение больше не содержит exoti c, положительный просмотр вперед должен работать с большинством механизмов регулярных выражений.
Запустите свой механизм!
Механизм регулярных выражений выполняет следующие операции.
\ + : match 1+ spaces
\( : match '('
(?!.* \)) : use a negative lookahead to assert the remainder of
the line does contain the string ' )'`
.* : match 0+ characters other than line terminators
Я предполагал, что вы хотите чтобы удалить все пробелы перед левой круглой скобкой, перед которой стоит хотя бы один пробел. Если, например, строка была:
Yasmani Grandal (1B 1.84)
^^^^^^^^^^^^^^^
, часть, обозначенная шляпами для вечеринок, была бы преобразована в пустую строку.