Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 p = Pattern.compile("[,.s;:{}/[]<>?`~!@#$%^&*()_+=]"); Pattern p=Pattern.compile(“[,.s;:{}/[]?`~!@$%^&*()”; 我的程序出错了。为什么不这样呢?这个正则表达式不会编译,因为在Java中,当在字符类中使用方括号时,需要对其进行转义: Pattern p = Pattern.compile("[,.s;:{}/\\[\\]<>?`~

当我尝试时:

Pattern p = Pattern.compile("[,.s;:{}/[]<>?`~!@#$%^&*()_+=]");
Pattern p=Pattern.compile(“[,.s;:{}/[]?`~!@$%^&*()”;

我的程序出错了。为什么不这样呢?

这个正则表达式不会编译,因为在Java中,当在字符类中使用方括号时,需要对其进行转义:

Pattern p = Pattern.compile("[,.s;:{}/\\[\\]<>?`~!@#$%^&*()_+=]");
                                      ^^^^^^

示例取自文档。

此正则表达式不会编译,因为在Java中,在字符类中使用方括号时,需要对其进行转义:

Pattern p = Pattern.compile("[,.s;:{}/\\[\\]<>?`~!@#$%^&*()_+=]");
                                      ^^^^^^
示例取自文档。

这是正确的正则表达式:

Pattern p = Pattern.compile("[,.s;:{}/\\[\\]<>?`~!@#$%^&*()_+=]");
只有
[
需要转义

]
如果位于字符类的第一个位置,则可以避免转义。

这是正确的正则表达式:

Pattern p = Pattern.compile("[,.s;:{}/\\[\\]<>?`~!@#$%^&*()_+=]");
只有
[
需要转义


]
如果它位于字符类的第一个位置,则可以避免转义。

您需要转义特殊字符,如[、]、+、(,)等。我不是100%确定,但您可以使用\Q和\E告诉正则表达式将特殊字符视为文本

例如:

Pattern p=Pattern.compile(“[\\Q.s;:{}/[]?`~!@$%^&*()”[u+=\\ E]);

请参阅

中的引号部分,您需要转义特殊字符,如[,],+,(,)等。我不是100%确定,但您可以使用\Q和\E告诉正则表达式将特殊字符视为文字

例如:

Pattern p=Pattern.compile(“[\\Q.s;:{}/[]?`~!@$%^&*()”[u+=\\ E]);

如前所述,请参见

中的引号部分,您必须跳过特殊字符。。。 为此,我建议您使用
模式.quote
方法(请参阅作为参考)

String s=Pattern.quote(“[,.s;:{}/[]?`~!@$%^&*()”;
模式p=模式编译;

如前所述,您必须跳过特殊字符。。。 为此,我建议您使用
模式.quote
方法(请参阅作为参考)

String s=Pattern.quote(“[,.s;:{}/[]?`~!@$%^&*()”;
模式p=模式编译;

您所说的崩溃是指它正在引发异常?那个异常是怎么说的?也许你错过了一个导入?你说的崩溃是指它抛出了一个异常?那个例外说明了什么?也许你错过了一个导入?为什么是双转义?@AprilRandolph,因为反斜杠也需要转义@AprilRandolph我编辑了我的答案以涵盖您的评论。@AprilRandolph如果这个问题解决了您的问题,您应该通过单击左侧的勾号来接受它:)谢谢。为什么要双转义?@AprilRandolph因为反斜杠也需要转义@AprilRandolph我已经编辑了我的答案以覆盖你的评论。@AprilRandolph如果这个问题解决了你的问题,那么你应该通过点击左边的勾号来接受它:)谢谢。另外,因为你使用的是引号
[\\Q\\\[\\\]\\E]
转义
[
]
是不正确的,因为它会使
\,[,\,]
character类和OP中的文本不希望包含\在此类中。嗯。。。似乎我复制/粘贴了另一个答案的正则表达式,而不是原始问题的正则表达式。已修复。另外,由于您正在使用引号
[\\Q\\[\\]\\E]
转义
[
]
是不正确的,因为它将使
\,[,,,]
字符类中的文字和OP不希望在此类中包含\。嗯。。。似乎我复制/粘贴了另一个答案的正则表达式,而不是原始问题的正则表达式。固定的。
Pattern p = Pattern.compile("[\\Q,.s;:{}/[]<>?`~!@#$%^&*()_+=\\E]");
String s = Pattern.quote("[,.s;:{}/[]<>?`~!@#$%^&*()_+=]");
Pattern p = Pattern.compile(s);