java正则表达式

来源:互联网 发布:电脑网络参数怎么设置 编辑:程序博客网 时间:2024/06/05 04:41

一、符号表示

(1)字符

.          \\.

任何字符    .

数字        [0-9]      \d

单词字符    [a-zA-Z0-9] \w

其他字符    [^a-zA-Z0-9]

反斜线      \\

换行        \n

回车        \r

(2)数量词

一次或一次也没有    ?

零次或多次       *

一次或多次       +

恰好n次         {n}

至少n次         {n,}

至少n次,不超过m {n,m}

(3)边界匹配器

行的开头      ^

行的结尾      $

一个单词边界   \b

非单词边界     \B

 

二、正则表达式的功能

正则表达式主要是针对字符串进行操作,可以简化对字符串的复杂操作,其主要功能有匹配、切割、替换、获取。

1、匹配

检查字符串是否符合正则表达式中的规则,有一次不匹配,则返回false。如:

String str="abc";

Stringreg="[a-zA-Z]\\d?";//此表达式表示字符串的第一位只能是字母,第二位只能是数字或没有

boolean flag=str.matches(reg);//返回结果为true

2、切割

所谓切割,即是按一定的规则将字符串分割成多个子字符串,如:

Stringstr="zhangsan,lishi,wangwu";

String reg=",";//表示以逗号作为切割符

String[] arr=str.split(reg);//返回结果为{“zhangsan”,"lisi","wangwu}

3、替换

即将字符串中符合规则的字符替换成指定字符,如:

String str="sfhh13hjas466247482";

str.replaceAll("\\d{3,}","#");//表示将连续出现三个或三个以上的数字替换成“#”,输出结果为sfhh13hjas#

4、获取

即获取与规格相符的字符串,其步骤为:

①将正则表达式封装成对象

②让正则表达式和要操作的字符串相关联,获得匹配器对象

③获取正则匹配引擎

④通过引擎对符合规则的子串进行操作:如

String str="ming tian jiu yaofang jia le";

Stringreg="\\b[a-z]{3}\\b";//"//b"表示单词边界

Pattern p=Pattern.compile(reg);

Matcher m=p.matcher(str);// 获得匹配器

while(m.find()){

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

      }//输出所有的匹配结果

 

三、两个常用的类

Pattern类

Pattern类的实例表示以字符串形式指定的正则表达式,其语法类似于Perl所用的语法。

用字符串形式指定的正则表达式,必须先编译成Pattern类的实例。生成的模式用于创建Matcher对象,它根据正则表达式与任意字符序列进行匹配。多个匹配器可以共享一个模式,因为它是非专属的。

用compile方法把给定的正则表达式编译成模式,然后用matcher方法创建一个匹配器,这个匹配器将根据此模式对给定输入进行匹配。pattern 方法可返回编译这个模式所用的正则表达式。

 

Matcher类

通过调用某个模式的matcher方法,从这个模式生成匹配器。 匹配器创建之后,就可以用它来执行三类不同的匹配操作:

(1)matches方法根据此模式,对整个输入序列进行匹配。

(2)lookingAt方法根据此模式,从开始处对输入序列进 行匹配。

(3)find方法扫描输入序列,寻找下一个与模式匹配的地方。

这些方法都会返回一个表示成功或失败的布尔值。如果匹配成功,通过查询 匹配器的状态,可以获得更多的信息。

 

四、常用例子:

(1)判断是否是数字或是否包含数字

public static boolean isDigit(Strings) {

       returns.matches("\\d{1,}");

   }

   public static boolean hasDigit(String s) {

       returns.matches(".*\\d+.*");    

   }

(2)截取数字第一次出现的位置

public static StringgetNumbers(String content) { 

           Pattern pattern =Pattern.compile("\\d+"); 

           Matcher matcher =pattern.matcher(content); 

           while(matcher.find()) { 

              returnmatcher.group(0); 

           } 

           return""; 

       }

(3)判断是否是汉字

if((int)char>255)

 

原创粉丝点击