java正则表达式中,Pattern.matches(regex, input)和Pattern.compile(regex).matcher(input).find()的区别
代码如下:Stringresult="${jboss.home}\\image";java.util.regex.Matcherm=java.util.regex.Pat...
代码如下:
String result = "${jboss.home}\\image";
java.util.regex.Matcher m = java.util.regex.Pattern.compile("\\$\\{.*\\}").matcher(result);
m.find()返回true
java.util.regex.Pattern.matches("\\$\\{.*\\}", result)返回false
为什么. 展开
String result = "${jboss.home}\\image";
java.util.regex.Matcher m = java.util.regex.Pattern.compile("\\$\\{.*\\}").matcher(result);
m.find()返回true
java.util.regex.Pattern.matches("\\$\\{.*\\}", result)返回false
为什么. 展开
3个回答
展开全部
第一个返回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);
}
}
第二个的话 你看下其方法 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);
}
}
展开全部
可以
Pattern.compile(regex, CASE_INSENSITIVE | DOTALL);
多个值 罗辑或
请参考
Pattern.compile(regex, CASE_INSENSITIVE | DOTALL);
多个值 罗辑或
请参考
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询