答案 1
matches
尝试将表达式与整个字符串进行匹配,并在模式的开头和结尾隐式添加 a,这意味着它不会查找子字符串。因此,此代码的输出:^
$
public static void main(String[] args) throws ParseException {
Pattern p = Pattern.compile("\\d\\d\\d");
Matcher m = p.matcher("a123b");
System.out.println(m.find());
System.out.println(m.matches());
p = Pattern.compile("^\\d\\d\\d$");
m = p.matcher("123");
System.out.println(m.find());
System.out.println(m.matches());
}
/* output:
true
false
true
true
*/
123
是的子字符串,因此该方法输出 true。 只有“看到”,这与不相同,因此输出错误。a123b
find()
matches()
a123b
123
答案 2
matches
如果整个字符串与给定模式匹配,则返回 true。 尝试查找与模式匹配的子字符串。find
推荐
-
字符类减法,从 Java 语法转换为正则表达式Buddy Java使用哪个正则表达式引擎? 在像RegexBuddy这样的工具中,如果我使用 Java中的表达式很好,但在RegexBuddy中它还没有被理解。 事实上,它报告说: 匹配以下列表中存在的单个字符
-
-
-
为什么在Java正则表达式中需要两个斜杠来查找“+”符号? 只是我不明白背后的全部含义。我明白,如果我想使用正则表达式找到它们,我需要转义任何特殊含义的字符。我还在某处读到,如果 Java 中的反斜杠位于 String 文本中,则需要对其进行转义。
-
[\s\S]* 之间有什么区别?和 .*?在 Java 正则表达式中? 我开发了一个正则表达式来标识文本文件中的xml块。表达式看起来像这样(我已经删除了所有java转义斜杠,使其易于阅读): 然后我优化了它,并替换为它突然停止识别xml。