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