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
?:)