------- android培训、java培训、期待与您交流! ----------
概述:专门用于操作字符串。作用于字符串的一个正确的规则的表达式
好处:用一些符号代表了代表,书写起来更加方便
弊端:因为是符号的表达式,所以阅读起来比较吃力,故先把符号学会
了解下正则的符号
中括号: [判断字符上的内容]
中括号: [判断字符上的内容]
预定义字符: 都带着反斜杠
. : 任意字符\d : 数字。[0-9]\D : 非数字。[^0-9]\w : 单词。[a-zA-Z0-9]\W : 非单词
边界字符;
^ :行的开头$ :行的结束\b:单词的边界
数量词:必须结合字符
X?:表示X出现一次或0次X* :表示X出现0次或多次X+ :表示X出现一次或多次X{n}:表示X恰好出现n次X{n,}:表示X至少出现n次X{n,m}:表示X出现n到m次,不包括m
正则规则的复用------组
概念: 想复用,先封装,封装用小括号()表示
编号: 封装完成后有编号,从1开始,直接通过编号调用对应的组
调用的方式:直接使用已有的组编号,前面加上\\,比如:(\d)\\1,表示在使用已有的第一组内容
原则: 先有组,才可以使用编号调用对应的组
String str = "avcssssdfeertyu";String regex = "(.)\\1+"; //将叠词作为分隔符(叠词是某个字符连续出现)
((A)(B(C)))这个有4个组,只要数左括号的个数即可;组的顺序也就是左括号的顺序
常见字符串操作功能:
匹配:使用字符串的matches功能String phone = "13677654567";String str_regex = "1[358]\d{9}";boolean isok = phone.matches(str_regex);
切割:使用字符串的split功能String str = "qwertyrrrtrfvcdsaxx";String regex = "(.)\\1+"; //叠词规则String[] strs = str.spilt(regex); //输出 [ qwerty, trfvcdsa ]
替换:使用字符串的replaceAll功能String name = "abc@@@@@cde******fg";String regex = "(.)\\1+";name.replaceAll(regex,"$1"); //输出 abc@cde*fg解说:在参数列表中,其他参数要使用之前参数的规则的组,就要使用$加编号
需求:将手机号码中间4位用*表示前后用小括号,表示其他参数也会复用到String phone = "13877676890";regex = "(\\d{3})\\d{4}(\\d{4})";phone = phone.replaceAll(regex, "$1****$2");System.out.println(phone);//输出 138****6890
获取:其他三个功能最终使用的是Pattern对象
现在需要使用其他功能,String没有对应的功能,只能找Pattern对象
Pattertn对象使用原理:1、将正则表达式字符串编译成正则表达式对象2、通过Pattertn对象获取Matcher对象(匹配器)3、通过匹配器对象对字符串规则的匹配,其结果在匹配器中
------- android培训、 java培训、期待与您交流! ----------4、通过匹配器对象获取结果范例代码:Pattertn parttern = Pattern.compile("a*b");Matcher m = parttern.matcher("aaaaaaaaaaaaaaaab");boolean b = m.mathcs();while(m.find()){ //查找匹配项System.out.print( m.group() ) ; //获取对应的字符串}