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正则表达式匹配器不匹配的主要内容,如果未能解决你的问题,请参考以下文章