Как найти символ в строке, который не соответствует шаблону регулярных выражений - PullRequest
2 голосов
/ 05 июня 2019

Существует регулярное выражение, и мне нужно найти символ, не соответствующий регулярному выражению.Затем замените символ на «» в. Как добиться этого в JAVA?

Pattern : ^((?![\|\=\;])[\p{L}\p{N}\p{M}\p{P}\p{Zs}])+$
Sample Text: HAIRCUT $42 PER PERSON
Required output: HAIRCUT 42 PER PERSON

Ответы [ 2 ]

2 голосов
/ 06 июня 2019

Просто отрицай то, что у тебя уже есть.

Найти (?!(?![|=;])[\p{L}\p{N}\p{M}\p{P}\p{Zs}])[\S\s]
Заменить nothing

https://regex101.com/r/Sn3DuL/1

 (?!
      (?! [|=;] )
      [\p{L}\p{N}\p{M}\p{P}\p{Zs}] 
 )
 [\S\s]
1 голос
/ 05 июня 2019

Вы можете заменить символ, соответствующий регулярному выражению.

String myString = "HAIRCUT $42 PER PERSON";
myString = myString.replaceAll("^((?![\|\=\;])[\p{L}\p{N}\p{M}\p{P}\p{Zs}])+$", "");

Результат:

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