Java正则表达式匹配器不匹配

问题描述 投票:0回答:2

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

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 regex
2个回答
1
投票

正则表达式和java字符串文字中的转义字符是反斜杠,而不是正斜杠。你想在正则表达式中获取\d(数字转义为d)。你必须通过字符串文字中的另一个反斜杠来逃避它,所以你获得\\d

"place (\\d+);(\\d+);(\\d+);(\\d+)"

它匹配和工作。


你当然可以把它变得运动,并尝试写一个正则表达式替换,用你的正则表达式替换//的所有\ ......这样的事情:

String pattern = "place (//d+);(//d+);(//d+);(//d+)".replaceAll("//", "\\\\");

0
投票

这可行:

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());
    }

你需要提供圆形支撑和斜线的place

© www.soinside.com 2019 - 2024. All rights reserved.