pound(#)在正则表达式中的含义

时间:2012-08-31 18:06:32

标签: regex

我有一个带有#修饰符的正则表达式。

\#在正则表达式中的含义是什么? #在正则表达式中的含义是什么? Java是否可能只是忽略这些无效的修饰符?

3 个答案:

答案 0 :(得分:13)

\#不是有效的正则表达式修饰符。从技术上讲,它是一种逃避#字符的方法,如果#意味着Java正则表达式中的任何重要内容。因为它没有,Java只是忽略了这种无效性并将其读作#而不是给你一个错误。

答案 1 :(得分:2)

我刚才有同样的问题。事实证明,在将所有“旧代码”从#更改为|时,之前的程序员“错过了”,这是一个简单的错误。我通过检查应用中的所有其他代码找到了这一点,但未找到其他#符号,但包含|的许多类似代码区域。 |就在此代码中的#旁边。所以有人正在换掉旧的正则表达式以获得新的正则表达式并“错过”。

答案 2 :(得分:1)

正如您所怀疑的,这只是一个错误。

可以肯定的是,我跑了:

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

,输出结果为:

"\Q_#_\E"

所以,很明显,英镑符号(“#”)不是java正则表达式的特殊字符。

请参阅:Pattern.quote()