黑马程序员_正则表达式

来源:互联网 发布:跳转域名 编辑:程序博客网 时间:2024/06/05 03:30

------- android培训java培训、期待与您交流! ---------- 

 

1.正则表达式:符合一定规则的表达式。

2.作用:用于专门操作字符串。

3.特点:用于一些特定的符号来表示一些代码操作。这样就简化书写。所以学习正则表达式,就是在学习一些特殊符号的使用。

4.好处:可以简化对字符串的复杂操作。

5.((())())四组 从左数  弊端:符号定义越多,正则越长,阅读性越差。

6.具体操作功能:

(1)匹配:Stringmatches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束返回false

(2)切割:Stringsplit();

(3)替换String replace();

(4)获取subStringindexof();

7.QQ号码进行校验

String qq = "323234454";

String regex = "[1-9][0-9]{4,14}";

System.out.println( qq.matches(regex));

8.匹配手机号 13xxx 15xxx 18xxx

String tel = "15324234223";

String telReg="1[358]\\d{9}";

System.out.println(tel.matches(telReg));

9. split():切割    

splitDemo("zhangsan  lisi wangwu" ," +"); //按照多个空格来进行切割。

splitDemo("zhangsan.lisi.wangwu","\\."); //.是特殊符号需要转译

              splitDemo("c:\\abc\\a.txt","\\\\");// \\反斜杠需要转译\\\\

              splitDemo("erkksdqqqqsdaooowe","(.)\\1+");//按照叠词完成切割。

public static voidsplitDemo(String str ,String reg)

              {

              String [] arr = str.split(reg);

              System.out.println(arr.length);

              for(String s : arr)

              {

                     System.out.println(s);

              }

       }

10.将字符串的数字连续超过5个的换成#

       String s = "256tr43000000087t";

       s =s.replaceAll("\\d{5,}","#");

       System.out.println(s);

11. 将重叠的字母替换成单个的字母 egzzzz--z$1

       String s ="erkksdqqqqsdaoooowe";

       s =s.replaceAll("(.)\\1+","$1");

       System.out.println(s);

12.为了可以让规则的结果被重用可以将规则封装成一个组。用()完成。组的出现都有编号。从1开始。想要使用已有的组可以通过\n(n就是组的编号)的形式来获取。

13.总结:匹配(返回真假),替换(返回替换后的),切割(返回规则以外的)。

示例1:将字符串中符合规则的字串取出。

操作步骤

(1)将正则表达式封装成对象

(2)让正则对象和要操作的字符串相关联

(3)关联或,获取正则匹配引擎

(4)通过引擎对符合规则的字串进行操作。比如取出。

importjava.util.regex.Matcher;

importjava.util.regex.Pattern;

classRegexDemo

{

       public static void main(String[] args)

       {

              getDemo();

       }

       public static void getDemo()

       {

              String str ="ming tian jiu yao fang jia le ,da jia.";

              String reg ="\\b[a-z]{4}\\b";// \\b单词边界

              //将规则封装成对象 

              Pattern p =  Pattern.compile(reg);

              //让正则对象和要作用的字符串相关联。获取匹配器对象。

              Matcher m = p.matcher(str);

              System.out.println(m.matches());

              while(m.find())

              {

                     System.out.println(m.group());

                     System.out.println(m.start()+"----"+m.end());

              }    

       }

}

示例2:将下列字符串转成:我要学编程

       tring str="我我...我我...我要....要要...学学学...学学...编编编...编程...程程......";

       str =str.replaceAll("\\...","");

       System.out.println(str);

       str =str.replaceAll("(.)\\1+","$1");

       System.out.println(str); 

示例3:对邮箱地址进行校验

       String mail ="ab_qwc12@sina.com";

       String reg ="[a-zA-Z0-9_]{6,12}@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";//较为精确的匹配。

       //Stringreg="\\w+@\\w+(\\.\\w+)+";//相对不太精确的匹配

       System.out.println(mail.matches(reg));

示例4:将ip地址进行地址段顺序的排序。   

String ip = "192.68.1.254 102.49.23.013 10.10.10.102.2.2.2 8.109.90.30";

       ip =ip.replaceAll("(\\d+)","00$1");//每一段需要的最多的0进行补齐,那么每一段就会至少保证有3位。

       ip =ip.replaceAll("0*(\\d{3})","$1");//每一段保留3位。这样,所有的iP地址都是每一段3位。

       System.out.println(ip);

       String[] arr= ip.split(" ");//按空格切割

       TreeSet<String> ts =new  TreeSet<String>();

       for(String s : arr)

       {

              ts.add(s);

       }

       for(String s :ts)

       {

              System.out.println(s.replaceAll("0*(\\d+)","$1"));//去掉00*0没有或多次)

       }

  

------- android培训java培训、期待与您交流! ---------- 

 

 

0 0