正则表达式:符合一定规律的表达式
作用:专门用于操作字符串
特点:用一些特定的符号表示一些代码的操作。这样简化书写
好处:可以简化对字符串的复杂操作
弊端:符号定义越多,符号越长,阅读性越差
具体操作功能:
1:匹配(String的matches(regex)方法),用规则匹配整个字符串,只要有一处不符合就结束,并返回false
2:切割(String的split()方法)
3:替换(String的replaceAll())
4:获得 将祖父传中符合规则的字串取出。步骤①将正则表达式封装成对象②让正则对象和要操作的字符串进行相关联③关联后,获取正则匹配引擎④通过引擎将符合规则的字符串进行取出操作
匹配例子
简单验证qq号码(要求是长度为5—15位的数字)
public static void main(String args[]){ String qq = "18735621s3"; String regex = "[1-9]d{4,14}"; boolean b = qq.matches(regex); if(!b){ System.out.println("格式正确"); } else System.out.println("格式错误"); }
切割例子
public static void splitDemo(){ String str = "zhangsan lisi wangwu"; String regex = " +";//多个空格 String[] arr = str.split(regex); for(String s:arr){ System.out.println(s); } }
注意切割的时候如果是正则表达式里的特殊符号,就要注意了比如“点”
String str = "zhangsan.lisi.wangwu"; String regex = ".";
String str = "c:javaa.text"; String regex = "\";
String str = "shiadiyiaadasofaccasdkhuu";//按照叠词进行切割aa cc uu String regex = "(.)1";//这里使用正则表达式里的组() 点表示任意字符 java回个组自动编号好1表示第一组相当于重用
替换例子
public static void replaceAllDemo(){ String str = "we19911115qq997922222dianhua1527121111"; String regex = "d{5,}";//多个空格 String newstr = "#"; str = str.replaceAll(regex,newstr); System.out.println(str); }
public static void replaceAllDemo(){ String str = "wesdssssdaofueeeassdasduqqq";//将zzzzz——》z String regex = "(.)1+";//多个空格 String newstr = "$1";//$1获取前边规则中的第一组 str = str.replaceAll(regex,newstr); System.out.println(str); }
获取例子
public static void getDemo(){ String str = "ming tian jiu yao fang jia le,tong zhi men "; String regex = "b[a-z]{3}b"; //讲规则封装成对象 Pattern p = Pattern.compile(regex); //让正则对象和要做用的字符串相关联,获取匹配器对象 Matcher m = p.matcher(str); while(m.find()){//讲规则作用到字符串上,并进行符合规则的字串查找 System.out.println(m.group());//获取别配后的结果 System.out.println(m.start()+"·····"+m.end()); } }
|