Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex pound(#)在正则表达式中的含义_Regex - Fatal编程技术网

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

Regex pound(#)在正则表达式中的含义,regex,Regex,我有一个带有pound#修饰符的正则表达式 \\\在正则表达式中是什么意思?#在正则表达式中是什么意思?Java是否可能只是忽略了这些无效的修饰符?\\\35;不是有效的正则表达式修饰符。如果在Java的正则表达式中有任何意义,那么从技术上讲,它将是一种转义字符的方法。因为没有,Java只是忽略了这种无效性,并将其作为一个读取,而不是抛出一个错误。正如您所怀疑的,这只是一个错误 可以肯定的是,我跑了: String quote = Pattern.quote("_#_"); 结果是: "\Q_

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


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

\\\35;
不是有效的正则表达式修饰符。如果
在Java的正则表达式中有任何意义,那么从技术上讲,它将是一种转义
字符的方法。因为没有,Java只是忽略了这种无效性,并将其作为一个
读取,而不是抛出一个错误。

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

可以肯定的是,我跑了:

String quote = Pattern.quote("_#_");
结果是:

"\Q_#_\E"
因此,很明显,英镑符号(“#”)不是java正则表达式的特殊字符


请参阅:

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

不是转义字符吗?但不确定#的用途。它可能来自使用
#
作为分隔符的PCRE正则表达式。可以对任何没有任何特殊意义的字符进行转义。根据我的经验,看到各种各样的东西逃逸并不罕见,因为正则表达式的作者不确定这个角色是否有特殊的意义。。。实际上解释了这一点:“在任何不表示转义构造的字母字符之前使用反斜杠是错误的;这些是为正则表达式语言的未来扩展保留的。反斜杠可以在非字母字符之前使用,无论该字符是否是未转义构造的一部分。”