很难说正则表达式不是个好东西,仅此记录在java中如何简单使用正则表达式
示例
public class RegexTest {
public static void main(String[] args) {
String regexStr = "[0-9]+";
String matStr = "09";
regexTest(regexStr, matStr);
regexTest2(regexStr, matStr);
}
public static void regexTest(String regexStr, String matStr){
Pattern pt = Pattern.compile(regexStr);
Matcher mt = pt.matcher(matStr);
boolean bl = mt.matches();
System.out.println("是否非负整数:" + bl);
}
public static void regexTest2(String regexStr, String matStr){
boolean matches = Pattern.matches(regexStr, matStr);
System.out.println("一步到位,是否非负整数:" + matches);
}
}
查看Pattern.matches(regexStr, matStr)源码 注:Pattern和Matcher都是final修饰,不能直接new一个对象
Pattern pt = Pattern.compile('正则表达式') :获取一个Pattern 对象,可以理解为一个匹配模式;Matcher mt = pt.matcher('待校验的字符串') :获取一个Matcher对象,可以理解为一个匹配器;boolean bl = mt.matches(); :返回匹配结果;boolean matches = Pattern.matches('正则表达式', '待校验字符串'); :返回正则表达式匹配待校验字符串后的结果;
查看源码可知:表达式4 <===> 表达式1 + 表达式2 + 表达式3 (当正则表达式需要重复使用时,则不建议使用表达式4, ) 补充:
Pattern的方法
- public static Pattern compile(String regex) 将给定的正则表达式编译成一个模式
- public Matcher matcher(CharSequence input) 创建一个匹配器,匹配给定的输入与此模式
- public static boolean matches(String regex, CharSequence input) 编译给定的正则表达式,并尝试匹配给定的输入;返回正则表达式是否匹配输入的结果
- public String pattern() 返回编译此模式的正则表达式
Matcher的方法
- public boolean matches() 尝试将整个区域与模式进行匹配
|