Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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,我不明白为什么结果总是假的 package test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String args[]) { String pattern = "place (//d+);(//d+);(//d+);(//d+)"; // Create a Patter

我不明白为什么结果总是假的

package test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

    public static void main(String args[]) { 
        String pattern = "place (//d+);(//d+);(//d+);(//d+)";

        // Create a Pattern object
        Pattern r = Pattern.compile(pattern);

        Matcher matcher1 = r.matcher("place 66;33;65;87");

        System.out.println(matcher1.matches());

    }

}

正则表达式和java字符串文本中的转义字符都是反斜杠,而不是正斜杠。您希望在正则表达式中获取\d,并为数字转义d。您必须用字符串文字中的另一个反斜杠将其转义,以便获得\\d

它匹配并工作

当然,您可以选择sportive并尝试编写一个正则表达式替换项,替换正则表达式中的所有//by\。。。大概是这样的:

String pattern = "place (//d+);(//d+);(//d+);(//d+)".replaceAll("//", "\\\\");
这将有助于:

public static void main(String args[]) {
        String pattern = "(place) (\\d+);(\\d+);(\\d+);(\\d+)";

        // Create a Pattern object
        Pattern r = Pattern.compile(pattern);

        Matcher matcher1 = r.matcher("place 66;33;65;87");

        System.out.println(matcher1.matches());
    }

您需要在圆括号和斜杠中提供位置。

简单的打字错误?/->\\Andrey是对的,将//正斜杠更改为\\反斜杠。
public static void main(String args[]) {
        String pattern = "(place) (\\d+);(\\d+);(\\d+);(\\d+)";

        // Create a Pattern object
        Pattern r = Pattern.compile(pattern);

        Matcher matcher1 = r.matcher("place 66;33;65;87");

        System.out.println(matcher1.matches());
    }