java中关于正则表达式的基本使用
概述,当对一个字符串的操作处理逻辑非常复杂,代码量大时可以采取正则表达式的方式来对字符串进行处理,但也有缺点,就是要熟悉各字符,符号及符号组合的意义需要经常使用才能孰能生巧
一.正则表达式的特点
1.作用:符合一定规则的表达式,用于专门操作字符串
2.特点:用于一些特定的符号来表示一些代码操作
3.好处:可以简化对字符串的复杂操作
二.匹配功能
1.定义:String matches方法,用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false
1 public static void checkQQ(){ 2 String qq="123456a"; 3 String regex="[1-9][0-9]{4,14}"; 4 boolean flag=qq.matches(regex); 5 if(flag){ 6 System.out.println(qq+"is ok..."); 7 }else{ 8 System.out.println(qq+"输入错误"); 9 } 10 }
1 public static void demo(){ 2 String str="b23a23456789"; 3 String reg="[a-zA-Z]\\d{2}[a-z]\\d*"; 4 boolean flag=str.matches(reg); 5 System.out.println(flag); 6 }
该方法不使用正则表达式,操作复杂,代码量大 public static void checkQQ_1(){ String qq=""; int len=qq.length(); if(len>=5&&len<=15){ if(!qq.startsWith("0")){ try { long l=Long.parseLong(qq); System.out.println("qq:"+qq); } catch (Exception e) { // TODO: handle exception System.out.println("出现非法字符"); } /*char arr[]=qq.toCharArray(); boolean flag=false; for (int i = 0; i < arr.length; i++) { if(!(arr[i]>='0'&&arr[i]<='9')){ flag=false; break; } } if(flag){ System.out.println("qq:"+qq); }else{ System.out.println("非法字符"); }*/ }else{ System.out.println("qq不能以0开头"); } }else{ System.out.println("长度错误"); } }
三.切割
1.String sprit();
1 public static void splitDemo(String str,String reg){ 2 //String reg=" +";//按多个空格来进行切割 3 String[] attr=str.split(reg); 4 System.out.println(attr.length); 5 for (String s : attr) { 6 System.out.println(s); 7 } 8 }
四.替换
1.String replaceAll()
1 public static void replaceAllDemo(String str,String regex,String newStr){ 2 str=str.replaceAll(regex, newStr); 3 System.out.println(str); 4 }
五.获取
1.定义:将字符串中符合规则的子串取出
2.操作步骤
2.1 将正则表达式封装成对象
2.2 让正则对象和要操作的字符串相关联
2.3 关联后,获取正则匹配引擎
2.4 通过引擎对符合规则的子串进行操作,比如取出
1 public static void getDemo(){ 2 String str="ming tian yao fang jia le,da jia. "; 3 String reg="\\b[a-z]{3}\\b";//\b代表单词边界 4 //将规则封装成对象 5 Pattern p=Pattern.compile(reg); 6 //让正则对象和要作用的字符串相关联,获取匹配器对象 7 Matcher m=p.matcher(str); 8 System.out.println(m.matches());//其实String类中的matches方法,用的就是Pattern和Matcher对象来完成的 9 //只不过被String类的方法封装后,用起来比较简单,但是功能却单一 10 //boolean b=m.find();//将规则作用到字符串上,进行符合规则的子串查找 11 //System.out.println(b); 12 //System.out.println(m.group());//用于获取匹配后的结果 13 while(m.find()){ 14 System.out.println(m.group()); 15 System.out.println(m.start()+"...."+m.end()); 16 } 17 18 }
六.正则表达式功能的选择
1.判断字符串是否正确,匹配功能
2.将字符串变成另一个字符串,替换功能
3.按照指定的方式将字符串变成多个字符串,切割功能
4.得到符合需求的字符串子串,获取功能
--------------------------------------技术改变生活,知识改变命运!