Подтвердить что ты не робот

Значение фунта (#) в регулярном выражении

У меня есть регулярное выражение с модификатором фунта #.

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

4b9b3361

Ответ 1

\# не является допустимым модификатором regex. Это было бы технически способом избежать символа #, если # означало что-то существенное в Java regex. Поскольку это не так, Java просто игнорирует эту недействительность и читает ее как #, а не бросает вам ошибку.

Ответ 2

У меня была такая же проблема. Оказалось, что предыдущий программист "пропустил" при смене всего "старого кода" от # до |, и это была простая ошибка. Я нашел это, проверив все остальные коды в приложении и не нашел никаких других символов #, но включил многие аналогичные области кода с |. И | находился рядом с # в этом коде. Так что кто-то менял прежнее регулярное выражение для нового регулярного выражения и "пропустил".

Ответ 3

Как вы подозревали, это просто ошибка.

Конечно, я побежал:

String quote = Pattern.quote("_#_");

а выход:

"\Q_#_\E"

Таким образом, символ фунта ( "#" ) не является особым символом для регулярного выражения java.

Смотрите: Pattern.quote()