У меня есть регулярное выражение с модификатором фунта #.
Что означает \# в регулярном выражении? Что означает # в регулярном выражении? Возможно ли, что Java просто игнорирует эти недействительные модификаторы?
Ответ 1
\# не является допустимым модификатором regex. Это было бы технически способом избежать символа #, если # означало что-то существенное в Java regex. Поскольку это не так, Java просто игнорирует эту недействительность и читает ее как #, а не бросает вам ошибку.
Ответ 2
У меня была такая же проблема. Оказалось, что предыдущий программист "пропустил" при смене всего "старого кода" от # до |, и это была простая ошибка. Я нашел это, проверив все остальные коды в приложении и не нашел никаких других символов #, но включил многие аналогичные области кода с |. И | находился рядом с # в этом коде. Так что кто-то менял прежнее регулярное выражение для нового регулярного выражения и "пропустил".
Ответ 3
Как вы подозревали, это просто ошибка.
Конечно, я побежал:
String quote = Pattern.quote("_#_");
а выход:
"\Q_#_\E"
Таким образом, символ фунта ( "#" ) не является особым символом для регулярного выражения java.