黑马程序员--正则表达式笔记总结

正则表达式

作用,用于专门操作字符串

特点:用于一些特定的符号来表示一些代码操作,这样就简化了书写

好处,可以简化对字符串的复杂操作

 

 

匹配:Matches 用规则匹配整个字符串,有一处不匹配,就否定

切割:split("123455dfdsfdd","(.)\\1+");//这是按照叠词来切割的 

替换:replace("dddddddd456546dd546546hkjh6kj5h654654","(.)\\1+","$1");//$1是将(.)\\1叠词重叠的 部分,替换叠词的其中一个

获取:

 

获取:

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

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

3.关联后,获取正则表达式匹配引擎

4.通过引擎对符合规则的子串进行操作,比如取出

5.Pattern正则表达式的编译表示形式

6.指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配

 

matcher

创建匹配给定输入与此模式的匹配器。 此模式的新匹配器

通过解释 Pattern 对 character sequence 执行匹配操作的引擎。

通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:

matches 方法尝试将整个输入序列与该模式匹配。

lookingAt 尝试将输入序列从头开始与该模式匹配。

find 方法扫描输入序列以查找与该模式匹配的下一个子序列。

每个方法都返回一个表示成功或失败的布尔值。通过查询匹配器的状态可以获取关于成功匹配的更多信息。

 

正则表达式的四大功能,匹配,切割,替换,获取

import java.util.regex.*;

class Regdemo 

{

public static void main(String[] args) 

{

//split("123455dfdsf dfdsfds dfd    jj  dfgdf"," +");//按照空格切割

//split("d:\\dd\\ff\\a.txt","\\\\");//安找\\切割

//split("123455dfdsfdddfdsggfggggggggggggggggd","(.)\\1+");//这是按照叠词来切割的 为了让规则被重用,可以讲规则封装成一个组,组的出现都有编号,从一开始,

//replace("dddddddd456546546546hkjh6kj5h654654","\\d{4,}","@");

//replace("dddddddd456546dd546546hkjh6kj5h654654","(.)\\1+","$1");//$1是将(.)\\1叠词重叠的 部分,替换叠词的其中一个

 

//获取字符串

get();

 

 

 

}

//获取

public static void get()

{

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

System.out.println(str);

String reg="\\b[a-z]{3}\\b";

//封装一个正则表达式对象

   Pattern p=Pattern.compile(reg);//将给定的正则表达式编译到pattern模式中

  Matcher m=p.matcher(str);// 创建匹配给定输入与此模式的匹配器。  

  while (m.find())//尝试查找与该模式匹配的输入序列的下一个子序列。如果还有这继续往下找

  {

  System.out.println(m.group());//返回由以前匹配操作所匹配的输入子序列。

 

  }

}

//替换

public static void replace(String str,String reg,String newStr)

{

str=str.replaceAll(reg,newStr);

System.out.println(str);

}

 

//切割

public static void split(String str,String reg)

{

 

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

//System.out.println(arr.length);

for (String s:arr )

{

System.out.println(s);

}

 

 

}

//匹配

public static void matches()

{

String qq="123455";

String reg="[1-9][0-9]{4,11}";

boolean bl=qq.matches(reg);

if(bl)

System.out.println("qq:"+qq);

else

System.out.println("QQ错误,不合法");

}

}

 

用正则表达式对IP地址进行验证

import java.util.*;

class Regtest 

{

public static void main(String[] args) 

{

ipsort();

}

//ip排序

public static void ipsort()

{

       String ip="129.3.4.5 21.3.4.6 3.4.3.2 1.2.5.7  5.44.45.6";

       ip=ip.replaceAll("(\\d+)","00$1");//替换序列所有数字保证每位数字最低位为三位

    System.out.println(ip);

   ip=ip.replaceAll("0*(\\d{3})","$1");//替换每一位数字的位数大于三位的,是数组中每个数字都是三位数

   System.out.println(ip);

  String[] arr=ip.split(" +");

  

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

   for (String s:arr )

   {

     set.add(s);

 

   }

   for (String s:set )

   {

   System.out.println(s.replaceAll("0*(\\d+)","$1"));

   }

 

}

 

}

 

 

 

 

posted @ 2012-12-06 19:43  杰的博客  阅读(233)  评论(0编辑  收藏  举报