2015-07-02 4 views
0

Что такое регулярное выражение, используемое для поиска скобок и чисел внутри этого paernthesis?регулярное выражение, чтобы найти скобки и числа внутри. Java

Желаемый выход:

  • вход = "Hello (1) World" .replaceAll (regex, "*");
  • результат = Hello * World

Я попробовал следующее:

  • вход = "Hello (1) World" .replaceAll ("([0-9])", "*");
  • результат = ""Hello (*) World"

Почему

ответ

1

( и ) зарезервированы символы в регулярных выражений (они создают группу) Вы должны избежать их, чтобы заменить их?.

"Hello (1) World".replaceAll("\\([0-9]\\)", "*"); 
+1

@Downvoter: Не могли бы вы объяснить, пожалуйста? – Keppil

+1

ya, почему downvote? –

1

Вы можете попробовать это,

"Hello (1) World".replaceAll("\\(\\d+\\)", "*"); 

() - специальные символы в регулярном выражении, которые представляют собой группу захвата. Все, что внутри (, ) должно быть захвачено. Поэтому, если вы используете ([0-9]), все цифры в вашей строке захватываются и заменяются *. Он не будет соответствовать форме (digit). Поэтому для того, чтобы соответствовать буквальным (, ) символам, вам нужно их избежать. Если вы хотите заменить (989898) т.е. (anynum), вам нужно добавить + после \\d или [0-9]

Смежные вопросы