Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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
Java正则表达式错误_Java_Regex - Fatal编程技术网

Java正则表达式错误

Java正则表达式错误,java,regex,Java,Regex,每当我进入下面的 Pattern pmessage = Pattern.compile("\s*\p{Alnum}[\p{Alnum}\s]*"); Matcher mmessage = pmessage.matcher(message); Matcher msubject = pmessage.matcher(subject); 我得到一个无效的转义序列错误。有人知道我为什么/如何解决这个问题吗?每个反斜杠加倍:模式。编译(\\s*\\p{Alnum}[\\p{Alnum}\\s]*” 字符

每当我进入下面的

Pattern pmessage = Pattern.compile("\s*\p{Alnum}[\p{Alnum}\s]*");
Matcher mmessage = pmessage.matcher(message);
Matcher msubject = pmessage.matcher(subject);

我得到一个
无效的转义序列
错误。有人知道我为什么/如何解决这个问题吗?

每个反斜杠加倍:
模式。编译(\\s*\\p{Alnum}[\\p{Alnum}\\s]*”


字符串文字中的反斜杠有一个,必须复制,才能使实际的反斜杠字符成为字符串的一部分(这是正则表达式示例中所要求的)。

将每个反斜杠加倍:
模式。编译(\\s*\\p{Alnum}[\\p{Alnum}\\s]*”


字符串文字中的反斜杠有一个,并且必须重复,才能使实际的反斜杠字符成为字符串的一部分(这是正则表达式示例中所要求的)。

请记住,反斜杠是Java字符串中的特殊字符,需要用额外的反斜杠转义:

Pattern.compile("\\s*\\p{Alnum}[\\p{Alnum}\\s]*");

请记住,反斜杠是Java字符串中的特殊字符,需要使用额外的反斜杠进行转义:

Pattern.compile("\\s*\\p{Alnum}[\\p{Alnum}\\s]*");

您没有正确转义“\”字符:在java中,“\s”将给您\s,因此您应该写:

Pattern.compile("\\s*\\p{Alnum}[\\p{Alnum}\\s]*");

您没有正确转义“\”字符:在java中,“\s”将给您\s,因此您应该写:

Pattern.compile("\\s*\\p{Alnum}[\\p{Alnum}\\s]*");

对于在Java本机字符集上工作的
\p{Alpha}
版本,您需要使用

alphabetics = "[\\pL\\pM\\p{Nl]";
对于相同意义上的数字,您必须选择以下哪一种:

ASCII_digits    = "[0-9]";
all_numbers     = "\\pN";
decimal_numbers = "\\p{Nd}"
因为哪一种适用取决于不同的情况。我们假设您将这三个变量中的一个复制到
数值变量中

假设您需要基于上述定义的字母数字,那么您可以编写:

 alphanumerics = "[" + alphabetics + numerics + "]";
然而,如果你所说的字母数字是程序标识符的
\w
意义,你必须添加一些东西

 identifier_chars = "[\\pL\\pM\\p{Nd}\\p{Nl}\\p{Pc}[\\p{InEnclosedAlphanumerics}&&\\p{So}]]";

在中详细讨论了这个问题,您还可以找到我的一些alpha代码的链接,这些代码会自动为您执行这些转换。我希望在这个周末有机会重写它,以减少占用的空间。

对于一个在Java本机字符集上工作的版本,
\p{Alpha}
,您需要使用

alphabetics = "[\\pL\\pM\\p{Nl]";
对于相同意义上的数字,您必须选择以下哪一种:

ASCII_digits    = "[0-9]";
all_numbers     = "\\pN";
decimal_numbers = "\\p{Nd}"
因为哪一种适用取决于不同的情况。我们假设您将这三个变量中的一个复制到
数值变量中

假设您需要基于上述定义的字母数字,那么您可以编写:

 alphanumerics = "[" + alphabetics + numerics + "]";
然而,如果你所说的字母数字是程序标识符的
\w
意义,你必须添加一些东西

 identifier_chars = "[\\pL\\pM\\p{Nd}\\p{Nl}\\p{Pc}[\\p{InEnclosedAlphanumerics}&&\\p{So}]]";

在中详细讨论了这个问题,您还可以找到我的一些alpha代码的链接,这些代码会自动为您执行这些转换。我希望本周末有机会重写它,以减少占用的空间。

请注意,即使针对DDouubbllee bbaacckksllllasshheess进行了更正,也不能使用Java本机字符,只能使用ASCII。这不应该是
bbaacckkslllasshheess
而不是
bbaacckksllllasshheess
?:)请注意,即使针对DDouubbllee BBaacckksllllasshheess进行了更正,也不能使用Java本机字符,只能使用ASCII。这不应该是
BBaacckkslllasshheess
而不是
BBaacckksllllasshheess
?:)