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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java正则表达式匹配器不匹配相关的知识,希望对你有一定的参考价值。

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

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

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

它匹配和工作。


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

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

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

以上是关于Java正则表达式匹配器不匹配的主要内容,如果未能解决你的问题,请参考以下文章

(java中)匹配IP的正则表达式的

java 正则怎么匹配符号加中文

用JAVA语言编写正则表达式匹配指定的汉字的方法

java的一个匹配多个邮箱的地址的正则表达式问题。

java正则表达式如何获取字符串中所有匹配内容

java 正则表达式 如何匹配固定长度的数字