正则表达式
正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。
正则表达式语法
点在正则表达式 有特殊含义,但在java字符串中无特殊含义,所以需要转义字符。
//一个字符串其实就是一个简单的正则表达式例如HelloWorld正则表达式匹配"Hello World"字符串。//.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。[abc] -----------abc中任意一个字符[^abc] ----------除了abc中任意字符[a-z]------------a,b,c......z中任意字母[a-zA-Z0-9]------a-z,A-Z,0-9中任意字符[a-z&&[^bc]]-----a-z中除了bc外其他任意字符x|y--------------匹配x或y。//例如,'z|food' 匹配"z"或"food"。'(z|f)ood' 匹配"zood"或"food"。
单词字符即数字,字母,下划线。
.-----任意字符\d--------任意一个数字字符\w--------单词字符\s--------匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。\D--------非数字字符\W---------非单词字符\S--------非空白字符X?-----------表示0个或者1个// [A-Z]? 随便写一个或者不写 B或者不写X*-----------表示0个或者任意多个XX+-----------表示1个或者任意多个X(>=1)X{n}----------表示n个XX{n,}-----------表示n个到任意多个X(>=X)X{n,m}--------表示n个到m个X
捕获组和分组
捕获组是把多个字符当一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
捕获组是通过从左至右计算其开括号来编号。若在表达式((A)(B(C))),有四个这样的组:((A)(B(C))) (A) (B(C)) (C)
分组
分组:()圆括号表示分组,可以将一系列正则表达式看成一个整体,分组时可以使用“|”表示使用“或”关系。
[ABC]{3}//BBC AAB AAA可以,BCD 不行(ABC){3}//ABCABCABC(ABC|DEF){3}//ABCDEFABC
matches 和 lookingAt 方法
matches 和 lookingAt 方法都用来尝试匹配一个输入序列模式。它们的不同是 matches 要求整个序列都匹配,而lookingAt 不要求。
lookingAt 方法虽然不需要整句都匹配,但是需要从第一个字符开始匹配。
/*** 字符串支持正则表达式方法* boolean matches(String regex)* 根据给定的正则表达式验证当前字符串是否满足格式要求,满足true 否则false*/publicclassString { publicstaticvoidmain(Stringargs[]){ /*** 电子邮箱* [a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+*/Stringregex="[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9_]+)+";//点在正则表达式 有特殊含义,但在java字符串中无特殊含义,所以需要转义字符System.out.println(regex); } }//[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+
split方法
/*** 字符串支持正则表达式方法二* String[] split(String regex)* 将当前字符串按照满足正则表达式的部分进行拆分,返回拆分的每段内容*/Stringstr="abcdef4ghijk123456zvdsf"; Stringregex="[0-9]+"; String[] array=str.split(regex); System.out.println("len:"+array.length); for (inti=0;i<array.length;i++){ System.out.println(array[i]); } //len:3//abcdef//ghijk//zvdsf
replaceFirst 和 replaceAll 方法
replaceFirst 和 replaceAll 方法用来替换匹配正则表达式的文本。不同的是,replaceFirst 替换首次匹配,replaceAll 替换所有匹配。
Stringstr="d23b33k"; str=str.replaceAll("\\d","#"); System.out.println(str);//d##b##k
appendReplacement 和 appendTail 方法
appendReplacement 和 appendTail 方法用于文本替换
privatestaticStringREGEX="a*b"; privatestaticStringINPUT="aabfooaabfooabfoobkkk"; privatestaticStringREPLACE="-"; publicstaticvoidmain(String[] args) { Patternp=Pattern.compile(REGEX); // 获取 matcher 对象Matcherm=p.matcher(INPUT); StringBuffersb=newStringBuffer(); while(m.find()){ m.appendReplacement(sb,REPLACE); } m.appendTail(sb); System.out.println(sb.toString()); //-foo-foo-foo-kkk
这是java中有关正则表达式的知识点,如果有啥问题,欢迎大家指出哈,谢谢大家。