java - шаблоны - регулярные выражения. 3-е изд.




Как избежать квадратной скобки для компиляции шаблонов (3)

Вы можете использовать Pattern.quote(String) .

Из документов:

public static String quote​(String s)

Возвращает литерал String для указанной String .

Этот метод создает строку, которая может быть использована для создания шаблона, который будет соответствовать строке s, как если бы это был буквенный шаблон.

Метасимволы или escape-последовательности во входной последовательности не будут иметь особого значения.

У меня есть список регулярных выражений, разделенных запятыми:

.{8},[0-9],[^0-9A-Za-z ],[A-Z],[a-z]

Я сделал разделение на запятую. Теперь я пытаюсь сопоставить это регулярное выражение с сгенерированным паролем. Проблема заключается в том, что Pattern.compile не любит квадратные скобки, которые не экранированы. Может кто-нибудь, пожалуйста, дайте мне простую функцию, которая принимает строку так: [0-9] и возвращает escape-строку \[0-9\] .


Вы можете использовать специальные символы \ Q и \ E ... что-либо между \ Q и \ E автоматически экранируется.

\Q[0-9]\E

Pattern.compile() любит квадратные скобки просто отлично. Если вы берете строку

".{8},[0-9],[^0-9A-Za-z ],[A-Z],[a-z]"

и разделите его на запятые, вы получите пять абсолютно правильных регулярных выражений: первый соответствует восьми символам без строки, второй соответствует значению ASCII и т. д. Если вы действительно не хотите сопоставлять строки типа ".{8}" и "[0-9]" , я не понимаю, почему вам нужно что-то избегать.





special-characters