我无法理解为什么结果总是错误的
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());
}
}
答案 0 :(得分:1)
正则表达式和java字符串文字中的转义字符是反斜杠,而不是正斜杠。您希望在正则表达式中获得\d
(转义d
以获取 d igits。您必须通过字符串文字中的另一个反斜杠来转义它,因此您获得\\d
。
使用
"place (\\d+);(\\d+);(\\d+);(\\d+)"
匹配并且有效。
你当然可以把它运用起来并尝试编写一个正则表达式替换,用你的正则表达式中的//
取代所有\
......这样的事情:
String pattern = "place (//d+);(//d+);(//d+);(//d+)".replaceAll("//", "\\\\");
答案 1 :(得分: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
。