1,正则表达式(regex):符合一定规则的表达式,java.util.regex.*;
作用:用于专门操作字符串
特点:用于一些特定的符号来表示一些代码操作,简化书写
好处:简化对字符串的操作;弊端:符号越多,正则越长,阅读性差
2,操作功能:
(1),匹配:String matches,用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false;
常见的正则:[abc],[a-z],[a-zA-Z],[0-9]——\d,X?——一次或一次也没有,X+——一次或多次,X*——零次或多次
(2),切割:String split
按照多个空格进行:“ +”
按照“.”进行:“\\.”
按照“\\”进行:“\\\\”
按照叠词进行:“(.)\\1+”
为了让规则的结果被重用,可以将规则封装一个组用()完成,组的出现都有编号,从1开始,想要使用已有的组可以通过 \n的形式来获取,n就是组的标号;
(3),替换:String replaceAll
将字符串中的数组替换#:str.replaceAll(“\\d{n.}”,“#”),{n.}表示连续超过n个;
将叠词替换成$:str.replaceAll(“(.)\\1+”,“#”);
将重叠的字符替换成单个字母 zzz——z :str.replaceAll(“(.)\\1+”,“$1”);
(4),获取:将字符串中符合规则的子串取出
1),将正则表达式封装成对象
Pattern p = Pattern.compile(reg)
2),让正则对象和要操作的字符串相关联,获取匹配器对象
Matcher m = p.matcher(str)
3),将规则作用到字符串上,并进行符合规则的子串查找
while(m.find())
{
sop(m.group())用于获取匹配后的结果
}
String reg = “\\b{a-z}{3}\\b”,3表示取出的单词数;
3,思路:
(1)如果只想知道该字符是对是错,用匹配
(2)想要将已有的字符串变成另一个字符串,用替换
(3)想要按照自定的方式将字符串变成多个字符串,用切割(获取规则以外的子串)
(4)想要拿到符合需求的字符串子串,获取(获取符合规则的子串)