代码如下:String result = "${jboss.home}\\image";java.util.regex.Matcher m = java.util.regex.Pattern.compile("\\$\\{.*\\}").matcher(result);m.find()返回truejava.util.regex.Pattern.matches("\\$\\{.*\\}", result)返回false为什么.
第一个返回true是因为 在字符串中result确实能匹配到相对的正则。所以返回true第二个的话 你看下其方法 matches(String regex, CharSequence input) CharSequence 是一个借口。字符串String继承了他。所以在这里java.util.regex.Pattern.matches("\\$\\{.*\\}", result)输入也没错但是下面这个方法抛了错误。直接返回了false。你看下下面的代码吧。不知道是否对的....package com;import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestOf { public static void main(String[] args) { String result = "${jboss.home}\\image"; String pat_str="\\$\\{.*\\}"; System.out.println(matcherAI(result, pat_str)); System.err.println(java.util.regex.Pattern.matches("\\$\\{.*\\}", result)); System.out.println(patternMatch(result, pat_str)); }public static boolean matcherAI(String result,String pat_str){ Pattern pattern=Pattern.compile(pat_str); Matcher matcher=pattern.matcher(result); return matcher.find(); } public static boolean patternMatch(String result,String pat_str ){ Pattern pattern=Pattern.compile(pat_str); System.out.println(pat_str.length()); CharSequence sc=pat_str.toString(); System.out.println(sc);// System.out.println(pattern.m); return pattern.matches(result, sc); }}