正则表达式学习笔记
2017-11-03 21:26
183 查看
用于判断字符串是否符合指定的规则 一、 组成部分: 1. 字符:
[abc]: 中括号代表的是一个字符, abc是指这个字符的取值范围
[a-z]
[a-zA-Z]
[a-zA-Z0-9_]
[^abc]: 这个字符的取值范围不是a\b\c就可以了
[^a-z]: 不在小写字母范围
2. 预定义字符
\d: 表示数字字符, 相当于 [0-9]
\D: 表示非数字字符,相当于 [^0-9]
\w: 表示的是 [A-Za-z0-9_]
\W: 表示的是 [^A-Za-z0-9_]
. : 点表示的是一个任意字符(除了\n)
3. 数量词: 假设X表示一个字符
X{n}: 表示X出现了n次
X{n,}: 表示X至少出现了n次
X{n,m}: 表示X出现了n-m次
X+: +表示X出现了一次以上,包括一次
X*: * 表示X出现0次以上
X? : ? 表示X出现了0次或者一次
4. 正则的分组
(a(b(cd))efg)
分组的规则
有几个左小括号就有几个组
第几个左小括号就是第几组
第0组代表整个正则
二、注意事项: 1. 在java中, 双引号中两个 \ 才能代表一个 \ 2. 字符串中支持正则表达式的方法:
matches
split
replaceAll
replaceFirst
三、分组查询示例
1 public class Test { 2 3 public static void main(String[] args) { 4 5 String str = "abcdabababbbbb"; 6 String regEx1 = "(a(b))cd\\1+\\2{4}"; //表示第一组"(ab)出现一次以上,第二组"(b)"出现四次 7 boolean b = str.matches(regEx1); 8 System.out.println(b);//true 9 10 String str2 = "aaabbbbbbbccaaaaddddddddddddd"; 11 String regEx2 = "(.)\\1+"; //表示任意字符(除"\n"外)练习出现一次以上 12 String ss = str.replaceAll(regEx2, "$1"); //将连续重复的字符替换第一个字符 13 System.out.println(ss); //"abcdababab" 14 15 //将字符串str3转换成 "我爱编程" 16 String str3 = "我..我....我...我......爱..爱...爱.....爱...编.....编....编..编....程....程...程....程!"; 17 //方法一 18 //(?=X) X,通过零宽度的正lookahead,表示不理解 19 String regEx3 = "(.)(?=.*\\1)"; 20 String a = str3.replaceAll (regEx3,""); 21 System.out.println (a); //我爱编.程! 22 // "\\p{Punct}"表示匹配 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 23 System.out.println (a.replaceAll ("\\p{Punct}",""));//我爱编程 24 25 //方法二 26 str3 = str3.replaceAll("(我\\.+)+(爱\\.+)+(编\\.+)+(程\\.+)+(程\\!+)","我爱编程"); 27 System.out.println (str3); //我爱编程 28 29 //方法三 30 str3 = str3.replaceAll ("[.!]","") 31 .replaceAll ("(.)\\1+","$1"); 32 System.out.println (str3); //我爱编程 33 } 34 }
相关文章推荐
- 正则表达式(Regular Expression)学习笔记
- javascript学习笔记:正则表达式1
- Java学习笔记之Pattern类的用法详解(正则表达式)
- Python学习笔记(四):面向对象、正则表达式(快速入门篇)
- Java正则表达式学习笔记,分离网页邮件地址的蜘蛛程序
- 学习笔记:基础正则表达式
- python学习笔记4-正则表达式
- Java学习笔记之Pattern类的用法详解(正则表达式)
- 黑马程序员_学习笔记4 IO流以及正则表达式解决一个传智播客的问题
- 学习正则表达式笔记
- MySql学习笔记5:正则表达式搜索
- node.js学习笔记之正则表达式
- scala学习笔记-文件和正则表达式
- Python学习笔记8:标准库之正则表达式
- 我学习正则表达式的笔记
- [Java] 学习笔记一(String,for循环,多线程,正则表达式,map用法)
- 【原】Java学习笔记023 - 字符串缓冲区_正则表达式
- 黑马程序员--学习笔记--正则表达式
- JavaScript之正则表达式学习笔记
- Shell正则表达式学习笔记