Regex pound(#)在正则表达式中的含义
我有一个带有poundRegex pound(#)在正则表达式中的含义,regex,Regex,我有一个带有pound#修饰符的正则表达式 \\\在正则表达式中是什么意思?#在正则表达式中是什么意思?Java是否可能只是忽略了这些无效的修饰符?\\\35;不是有效的正则表达式修饰符。如果在Java的正则表达式中有任何意义,那么从技术上讲,它将是一种转义字符的方法。因为没有,Java只是忽略了这种无效性,并将其作为一个读取,而不是抛出一个错误。正如您所怀疑的,这只是一个错误 可以肯定的是,我跑了: String quote = Pattern.quote("_#_"); 结果是: "\Q_
#
修饰符的正则表达式
\\\
在正则表达式中是什么意思?#
在正则表达式中是什么意思?Java是否可能只是忽略了这些无效的修饰符?\\\35;
不是有效的正则表达式修饰符。如果
在Java的正则表达式中有任何意义,那么从技术上讲,它将是一种转义
字符的方法。因为没有,Java只是忽略了这种无效性,并将其作为一个
读取,而不是抛出一个错误。正如您所怀疑的,这只是一个错误
可以肯定的是,我跑了:
String quote = Pattern.quote("_#_");
结果是:
"\Q_#_\E"
因此,很明显,英镑符号(“#”)不是java正则表达式的特殊字符
请参阅:我刚刚遇到了同样的问题。事实证明,先前的程序员在将所有“旧代码”从
更改为
时“错过了”,这是一个简单的错误。我通过检查应用程序中的所有其他代码发现了这一点,没有发现其他
符号,但包含了许多类似的
代码区域。而|
就在这段代码中#
的旁边。所以有人把旧的正则表达式换成了新的正则表达式,“missed”。不是转义字符吗?但不确定#的用途。它可能来自使用#
作为分隔符的PCRE正则表达式。可以对任何没有任何特殊意义的字符进行转义。根据我的经验,看到各种各样的东西逃逸并不罕见,因为正则表达式的作者不确定这个角色是否有特殊的意义。。。实际上解释了这一点:“在任何不表示转义构造的字母字符之前使用反斜杠是错误的;这些是为正则表达式语言的未来扩展保留的。反斜杠可以在非字母字符之前使用,无论该字符是否是未转义构造的一部分。”