Java正则表达式

其实说到正则表达式,大家并不陌生,在J2EE开发中,正则表达式使用非常普遍,其简单易用,灵活性强,受到广大码农群众的青睐!下面,讨论一下Java的正则表达式:

 

支持的合法字符列表:

x :字符x(x代表任何合法字符)

\0mnn:八进制0mnn所表示的字符

\xhh:十六进制0xhh所表示的字符

\uhhhh:十六进制0xhh所表示的unicode字符

\t:制表符('\u0009')

\n:换行符('\u000A')

\r:回车符('\u000D')

\f:换页符('\u000C')

\a:报警符('\u0007')

\e:Escape符('\u001B')

\cx:x对应的控制符。如\cM匹配Ctrl-M。x值必须为A~Z或a~z之一。

 

特殊字符,在使用时必须先转义(在前面加\),下面为特殊字符列表:

$:匹配一行的结尾。

^:匹配一行的开头。

():标记子表达式的开始和结束位置。

[]:用于确定中括号表达式的开始和结束位置。

{}:用于标记前面子表达式的出现次数。

*:指定前面子表达式可以出现零次或多次。

+:指定前面子表达式可以出现一次或多次。

?:指定前面子表达式可以出现零次或一次。

.:匹配除换行符\n之外的任何单字符。

\:用于转义下一个字符,或指定八进制、十六进制字符。

|:指定两项之间任选一项。

 

通配符,也称预定义字符:

.:匹配任何字符。

\d:匹配0~9之间数字。

\D:匹配非数字(与\d相反,下面同理)。

\s:匹配所有的空白符,包括空格、制表、回车、换页、换行等。

\S:匹配所有非空白符。

\w:匹配所有单词字符,包括0~9,26个英文大小写字母,下画线(_)。

\W:匹配所有非单词字符。

 

其中d代表digit,数字的意思;s代表space空白;w代表word单词。大写刚好相反。

 

方括号表达式:

[]:表示枚举,如[abc]表示a、b、c表示其中任意一个字符。

-:表示范围,如[a-f]表示a~f范围内的字符,可以与枚举功能组合使用[a-fg-x],a~f、g~x范围内的字符。

^:表示不在,如[^abc]表示不是abc任意一个字符,[^a-f]不在a~f范围内的字符。

&&:表示交集,如[a-z&&[^abc]],等价于[d-z].

 

边界匹配符:

^:行的开头。

$:行的结尾。

\b:单词的边界。

\B:非单词的边界。

\A:输入的开头

\G:前一个匹配的结尾。

\Z:输入的结尾,仅用于最后的结束符。

\z:输入的结尾。

 

正则表达式支持的数量标识符有3种模式:

1.贪婪模式(Greedy):默认采用贪婪模式

2.勉强模式(Reluctant):以?做后缀

3.占有模式(Possesive):以+做后缀

 

贪婪模式匹配各类:

X?:表达式X出现零次或一次

X*:表达式X出现零次或多次

X+:表达式X出现多次或一次

X{n}:表达式X出现n次

X{n,}:表达式X至少出现n次

X{n,m}:表达式X至少出现n次,至多出现m次。

其他模式只要基于贪婪模式后面加上后缀即可,如占有模式下的X{n,m}为X{n,m}+。

 

以上量正则表达式基础,Java中使用正则表达式有两个类,分别为Pattern和Matcher。下面给出Demo:

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class TestRegx1 {

 

 public static void main(String[] args) {

  String[] mails={"[email protected]","[email protected]","[email protected]","[email protected]"};

  String mailRegEx="\\w{3,20}@\\w+\\.(com|org|cn|net|gov)";

  Pattern p=Pattern.compile(mailRegEx);

  Matcher m=null;

  for(String mail : mails){

   if(m==null)

    m=p.matcher(mail);

   else

    m.reset(mail);

  String result=mail+(m.matches()?" is a ":" not a ")+"valid mail address!";

  System.out.println(result);

  }

 }

}

输出结果:

[email protected] is a valid mail address!

[email protected] is a valid mail address!

[email protected] is a valid mail address!

[email protected] not a valid mail address!


你可能感兴趣的:(Java正则表达式)