作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白为什么结果总是错误的
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 数字)。您必须在字符串文字中使用另一个反斜杠对其进行转义,因此您将获得 \\d
。
与
"place (\\d+);(\\d+);(\\d+);(\\d+)"
它匹配并且有效。
<小时/>您当然可以采取积极的态度,尝试编写一个正则表达式替换,将正则表达式中的所有 //
替换为 \
...如下所示:
String pattern = "place (//d+);(//d+);(//d+);(//d+)".replaceAll("//", "\\\\");
关于Java正则表达式匹配器不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49072785/
我是一名优秀的程序员,十分优秀!