JAVA学习笔记-----正则表达式
2017-09-10 21:54
253 查看
符号
“*”号:零次或多次“?”号:零次或一次
“+”号:一次或多次
“[a-z0-9]”:范围,匹配一个字符,^代表非,|代表或者,&&代表且。
例子:
[a-zA-Z]、[a-z]|[A-Z]、[a-z[A-Z]]都是或者的意思。
[A-Z&&[RFG]]:A-Z并且属于RFG中的。
“{n}”:通常和[]搭配,前面的范围重复n次。
“{n,m}”:通常和[]搭配使用,表示之前的范围重复n到m次。PS:m可以为空,代表大于n次。
例子:[a-z]{2,5}:a到z的字母重复2到5次都可以匹配,如“abcd”。
转移符号含义
“.”号:一个字符\d:数字,[0-9]
\D:非数字的字符,[^0-9]
\s:空白符,[\t\n\x0B\f\r]
\S:非空白符,[^\s]
\w:单词字符,[a-zA-Z_0-9]
\W:非单词字符,[^\w]
特别注意:
“\\”.matches("\\\\");
注意反斜线需要使用反斜线转移,前面代表一个反斜线.正则表达式去匹配一个反斜线本来就是使用两个\,故在字符串中,需要对每个\前面加上\进行转移。故使用“\\”来匹配“\”。
边界处理
^:字符串开头,不匹配任何字符。$:字符串结尾,不匹配任何字符。
\b:单词边界(空格、换行、特殊字符),不匹配任何字符。
\B:非单词边界,不匹配任何字符。
举例理解:
System.out.println(" \n".matches("^[\\s&&[^\\n]]*\\n$"));
理解:空白符开头但不是换行符开头且可以为多个,并且以\n结尾。
System.out.println("aaa 999c".matches("^[a-z]*\\b\\d{3}.$"));
理解:字母开头(零个或多个),单词边界(不占位),数字(3个),任意字符匹配一个。
Matcher中的mathces、reset、find、lookingAt方法
mathces():当前字符串与正则表达式是否匹配,要求整个字符串都与正则表达式匹配,才返回true;reset():当正则表达式进行匹配时,会移动游标进行匹配,该方法把游标重置为起始位置。
find():查找字符串中是否有子串与正则表达式匹配,且移动游标。
start()/end():当find()为true时,可以通过
start()/end()找到子字符串匹配的起始位置和终止位置,否则报错。
lookingAt():该方法不理会游标的位置,每次都会从头查找是否有子串与正则表达式匹配。
替换字符串
通过正则表达式替换字符串,返回至StringBuffer。/*替换java(忽略大小写),第奇数个替换成小写,偶数个替换成大写*/ Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher("java Java JAVa JaVa IloveJAVA you hateJava asdasdas"); int index = 0;//奇偶计数器 StringBuffer buf = new StringBuffer(); while (m.find()) { index++; if (index % 2 == 0) { m.appendReplacement(buf, "java");//该子字符串替换完成后,复制到buf } else { m.appendReplacement(buf, "JAVA");//该子字符串替换完成后,复制到buf } } m.appendTail(buf);//将剩余字符串添加到buf p(buf);//显示buf
分组
代码解释。要求:找到匹配的字符串,求出前几位数字。
/*一:原始方法,然后在返回结果中继续匹配*/ Pattern p = Pattern.compile("\\d{3,5}[a-z]{2}"); String s = "111aa-3333bb-222cc-11"; Matcher m = p.matcher(s); while (m.find()) { p(m.group()); } /* 结果: 111aa 3333bb 222cc*/ /*二:利用正则表达式的分组功能*/ Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");//加括号,分组 String s = "111aa-3333bb-222cc-11"; Matcher m = p.matcher(s); while (m.find()) { p(m.group(1));//1:第一组 2:第二组 空:所有 } /*结果: 111 3333 222*/
相关文章推荐
- java学习笔记06--正则表达式
- java 从零开始,学习笔记之基础入门<正则表达式>(三十一)
- java学习笔记---正则表达式
- 黑马程序员 JAVA学习笔记 —— 正则表达式
- java学习笔记06--正则表达式
- Java学习笔记之Pattern类的用法详解(正则表达式)
- java 学习笔记之正则表达式
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<正则表达式>(三十一)
- JAVA学习笔记(12)关于正则表达式
- 11. JAVA常用类库 Part 5 (正则表达式、定时调度、本章要点) ----- 学习笔记
- 黑马程序员 java学习笔记——正则表达式
- java正则表达式学习笔记
- JAVA学习笔记-字符串和正则表达式
- Java学习笔记----正则表达式
- 【Java学习笔记】正则表达式
- 类字符串java学习笔记06--正则表达式
- java正则表达式学习笔记
- Java学习笔记-正则表达式的模式匹配
- Java学习笔记之正则表达式
- java学习笔记06--正则表达式