Как я могу сопоставить только круглые скобки, исключив содержимое в том же, используя регулярное выражение - PullRequest
0 голосов
/ 22 мая 2019

У меня есть String lower (Type) или LOWER (Type)

Мне нужно заменить слово lower () или LOWER () так, чтобы вывод был

Type

Чтобы решить эту проблему, мне понадобится регулярное выражение, которое соответствует только слову lower () или LOWER () и исключает любое содержимое, присутствующее в Lower () или LOWER ()

Я пробовал ниже регулярного выражения -

lower\(.*\) 

, но соответствует полному слову, включая содержимое в круглых скобках

1 Ответ

0 голосов
/ 22 мая 2019

Вместо того, чтобы думать о том, как только сопоставить строки, которые вы хотите использовать, используя Matcher.matches или Matcher.find, вы можете использовать String.replaceAll, чтобы заменить строку, которая соответствует шаблону, на другую строку.

Вы можете использовать это регулярное выражение:

(?i)lower\(([^)]*)\)

с заменой $1, чтобы сделать это:

String result = inputString.replaceAll("(?i)lower\\(([^)]*)\\)", "$1");

Регулярное выражение в основном соответствует регистру lower( без учета чувствительности ((?i)) и затем помещает все в скобках в группу 1 (([^)]*)), затем оно соответствует закрывающей скобке.Замена $1 означает замену на то, что входит в группу 1. Это означает, что lower(Type) будет заменено на Type.

Regex Demo

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