正则表达式

来源:互联网 发布:淘宝众筹logo 编辑:程序博客网 时间:2024/06/13 05:19

在java.util.regex.Pattern中列出了所有的正则表达(重点)

 

       字符类

1

[abc]

a、b或c

2

[^abc]

任何字符、除了a、b和c                     

3        

[a-zA-Z]                           

大小写字母

4

[a-d[m-p]]

a到d或m到p

             

       预定义字符类

1

\d

数字

2

\D

非数字

3

\s

空白字符

4

\S

非空白字符

5

\w

单词字符[a-zA-Z_0-9]  

6             

\W                      

非单词字符

7

.

任何字符

 

       边界匹配器

 

^

行的开头

 

$

行的结尾

       

        数量词

1

X?

0或1次

2

X+

1次或更多

3

X*

0次或更多

4

X{n}

恰好n次

5

X{n,}              

n次或以上             

6

X{m,n}

m到n次

 

Pattern类主要是负责通过Pattern.compile(Stringregex)定义正则规范,和通过split(charSwquence input)拆分字符串的操作。(理解)

NO

方法

描述

1

Public static Pattern 
compile(String regex)

获取pattern实例,并设置正则

2

public Matcher matcher(CharSequence input)

为Matcher实例化

3

public String[] split(CharSequence input)

拆分字符串input

4

public String pattern()

返回正则表达式

 

例如:

    public static void main(String[] args) {

       Pattern pat= Pattern.compile("\\d+");//定义拉一个正则规范

       String str ="12dd1234hu34ij9df53yh54ij";

       String[] s=pat.split(str);//按数字,拆分字符串

       for(int i=0;i<s.length;++i){

           System.out.print(s[i]+" ");

       }

    }

 

//结果 dd hu ij df yh ij

 

java.util.regex.Matcher类主要功能是用于进行正则的匹配,通过Pattern类中定义完的正则,在使用Matcher类进行验证或者替换。(理解)

NO

方法

描述

1

public boolean matches()

判断正则是否匹配

2

public String replaceAll(String replace)

正则替换成replace

3

public String replaceFirst(String replacement)

正则第一个替换成replacem

 

验证功能:

    public static void main(String[] args) {

       String str ="111-22-555";

       String reg="\\d{3}-\\d{2}-\\d{3}";

       Pattern pat = Pattern.compile(reg);

       Matcher m = pat.matcher(str);

       if(m.matches()){

           System.out.println("验证成功");

       }else{

           System.out.println("验证失败");

       }

    }

 

替换功能

public static void main(String[] args) {

       Pattern pat= Pattern.compile("\\d+");//定义拉一个正则规范

       String str ="12dd1234hu34ij9df53yh54ij";

       Matcher m= pat.matcher(str);

       String s=m.replaceAll("*");

           System.out.print(s);

    }

}

//*dd*hu*ij*df*yh*ij

其实以上Pattern和Matcher的操作在String类中都存在,所以我们更多时候是用String类中的操作来完成正则。实际上在开发中我们都是用String的操作正则表达式,而不是用Pattern和Matcher类。

 

String类中的正则表达式支持(重点

NO

方法

描述

1

public boolean matches(String regex)

是否匹配

2

public String replaceAll(String regex,String replacement)

符合regex正则的都替换成replacement

3

public String replaceFirst(String regex,String replacement)

第一个符合符合regex正则的替换成replacement

4

public String[] split(String regex)

根据给定正则regex的匹配拆分此字符串

 

举例:

public static void main(String[] args) {

       String str="jtlyuan@126.com";

        if(str.matches("\\w+@\\w+.(com|com.cn|cn|net.cn|org|edu|gov)")){

           System.out.println(str+"是一个邮箱地址");

       }

    }