预定义字符
预定义字符是正则表达式中的“通配符”,是可以匹配多个字符的特殊字符。
预定义字符函数。匹配任意字符ddigit,表示数字,匹配从0 到9 的所有数字D 匹配非数字空格,表示空白,匹配所有空白字符(空格、换行、回车、换页、制表符)字符,等)S 匹配所有非空白字符wword,代表单词,匹配所有单词字符,包括0-9的所有数字、26个英文字母和下划线"_"W匹配所有非单词字符
三种模式的数量表示符
贪婪模式:贪婪,数量指标默认为贪婪模式,会继续匹配,直到无法匹配为止。不情愿模式:不情愿,用问号表示?后缀,只会匹配最少数量的字符,也称为最小匹配模式。所有格模式:所有格,用加号+后缀表示。贪婪模式勉强模式占领模式效果X?X?X?X 表达式出现0 或1 次X*X*?X*?X 表达式出现0 或多次X{n}X{n}?X{n} ?X 表达式出现1 次或多次X{n,}X{n,}?X{n,}?X 表达式出现至少n 次X{n,m}X{n,m}?X{n,m }? b、c、d 中的任意字符; range:-[a-e],代表a到e中的任意字母;可以与枚举结合使用,[a-eu-z],表示从a到e,u到z范围内任意字符的取反:^[abcd],表示不是a中的字符, b、c 或d; [a~e] 表示不是a 到f 范围内的字符,运算: [a-g[bch] ,求a~z 与bch 的交集,则结果为bc 并运算[a-e[h-j] ]],相当于[a-eh-j]
方括号表达式
正则表达式的使用
String类中的查找、替换、分割、提取等操作方法
boolean matches(String regex):判断字符串是否与指定的正则表达式匹配; String ReplaceFirst(String regex, String ReplaceStr):将字符串中第一个匹配regex的子串替换为replaceStr; StringreplaceAll(Stringregex,StringreplaceStr):将字符串中所有匹配regex的子串替换为replaceStr; String[] split(String regex):使用regex作为分隔符分割字符串;
String类常用方法
find():返回目标字符串是否包含与Pattern匹配的子字符串。如果传入的是int类型参数,则从int索引向下查找; group():返回最后一个与Pattern匹配的子串; start():用于确定子串在目标字符串中的位置;返回目标字符串中最后一个匹配Pattern的子串的起始位置; end():用于确定子串在目标字符串中的位置;返回最后一次与Pattern匹配的情况Pattern匹配的子串在目标字符串的末尾位置加1; matches():判断整个目标字符串是否与Pattern匹配,只有整个字符串完全匹配Pattern时返回true; LookingAt:返回目标字符字符串前缀是否匹配Pattern,只要字符串以Pattern开头就返回true; reset():将现有的Matcher对象应用到新的字符序列;
Matcher类常用方法
Pattern是一个不可变的类,是正则表达式编译器在内存中表示后,在Java中使用正则表达式字符串时,首先要编译成Patter对象,然后用Pattern对象创建对应的Matcher目的。
用法//将正则表达式编译成Pattern对象
模式pattern=Pattern.compile("bc*d");
//使用编译后的Pattern 对象创建一个Matcher 对象
匹配器m=p.matcher("bccccd");
布尔b=m.matches();
System.out.println(b);结果true 以上步骤相当于
boolean b=Pattern.matches("bc*d", "bccccd");
System.out.println(b);
Pattern对象用法
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类PatternUtil {
公共静态匹配器getMatcher(字符串正则表达式,字符串源){
模式模式=Pattern.compile(regex);
匹配器matcher=pattern.matcher(source);
返回匹配器;
}
公共静态无效主(字符串[] args){
字符串正则="(\D*)(\d+)(.*)(\d)";
String str="这是测试1000$,请检查! 12";
匹配器matcher=getMatcher(regix, str);
if (matcher.find()) {
System.out.println("匹配器组():" + matcher.group());
System.out.println("匹配器组(0): " + matcher.group(0));
System.out.println("匹配器组(1):" + matcher.group(1));
System.out.println("匹配器组(2):" + matcher.group(2));
System.out.println("匹配器组(3):" + matcher.group(3));
System.out.println("匹配器组(4):" + matcher.group(4));
} 别的{
System.out.println("不匹配");
}
}
}
封装正则表达式工具类
matcher group():这是测试1000$,请检查! 12
匹配组(0): 这是测试1000 $,请检查! 12
Matcher group(1):这是测试
匹配组(2):1000
好了,文章到此结束,希望可以帮助到大家。
【Java 编程:深入理解正则表达式(Pattern与Matcher类)】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
想学习Java编程,感觉正则表达式一直是个难题啊!
有8位网友表示赞同!
Pattern类和Matcher类是理解正则表达式的关键吧?
有18位网友表示赞同!
终于有人讲清楚了,以前看那堆公式都头疼的说。
有7位网友表示赞同!
分享这种学习资料真好,可以让我快速提升Java技能。
有11位网友表示赞同!
现在很多职位都要求掌握Java和正则表达式,看来得好好学一学了。
有11位网友表示赞同!
看了这个标题,感觉应该会讲得很详细很全面吧?
有20位网友表示赞同!
我最近在做的项目用到正则表达式,这篇博客正好给我指明方向!
有18位网友表示赞同!
学习Java编程过程中遇到过很多问题,希望这篇文章能解决我的困惑。
有18位网友表示赞同!
文章讲得简单易懂,即使对正则表达式不了解的人也能理解。
有15位网友表示赞同!
期待作者能够更详细的演示代码示例!
有10位网友表示赞同!
Java学习确实需要系统性的学习,这篇博客看起来很有帮助!
有15位网友表示赞同!
之前自己尝试着用正则表达式,总是会出错,不知道这里有什么新技巧?
有10位网友表示赞同!
看来Pattern类和Matcher类都是必备的工具啊!
有12位网友表示赞同!
分享这种实战宝典太棒了,可以让我更快地掌握Java技能!
有13位网友表示赞同!
这个题目很有针对性,应该能够深入讲解正则表达式的使用方法。
有20位网友表示赞同!
我之前一直用记不住正则表达式规则,这篇文章可能会帮到我!
有15位网友表示赞同!
希望这篇博客能详细解释各个函数的使用方法!
有13位网友表示赞同!