我有一个带有#
修饰符的正则表达式。
\#
在正则表达式中的含义是什么? #
在正则表达式中的含义是什么? Java是否可能只是忽略这些无效的修饰符?
答案 0 :(得分:13)
\#
不是有效的正则表达式修饰符。从技术上讲,它是一种逃避#
字符的方法,如果#
意味着Java正则表达式中的任何重要内容。因为它没有,Java只是忽略了这种无效性并将其读作#
而不是给你一个错误。
答案 1 :(得分:2)
我刚才有同样的问题。事实证明,在将所有“旧代码”从#
更改为|
时,之前的程序员“错过了”,这是一个简单的错误。我通过检查应用中的所有其他代码找到了这一点,但未找到其他#
符号,但包含|
的许多类似代码区域。 |
就在此代码中的#
旁边。所以有人正在换掉旧的正则表达式以获得新的正则表达式并“错过”。
答案 2 :(得分:1)
正如您所怀疑的,这只是一个错误。
可以肯定的是,我跑了:
String quote = Pattern.quote("_#_");
,输出结果为:
"\Q_#_\E"
所以,很明显,英镑符号(“#”)不是java正则表达式的特殊字符。
请参阅:Pattern.quote()