读书人

java正则表达式的初始

发布时间: 2012-10-29 10:03:53 作者: rapoo

java正则表达式的初步

Java正则表达式

1、句点符号(.)

句点符号可以匹配所有的任意的字符,甚至是换行符。

正则表达式:t.n

匹配:tan, Ten, tin等等

?

但需要注意的是:句点符号只能匹配一个任意的字符。

如:t.n对teen的匹配为false

?

2、方括号符号([])

为了解决句点符号匹配范围过于广泛的这一问题,可以使用方括号[],里面指定的有意义的字符。只有方括号里面指定的字符才能匹配。

?

正则表达式:t[aeio]n

匹配: tan, Ten , tin, ton

?

同样,方括号中只能匹配一个字符。如上正则表达式???t[aeio]n??对taen的匹配为false

?

3、“或”符号

“或”符号的运算和方括号的使用相似,只是“或”可以对表达式中的字符分组,换句话说就是“或”可以匹配多个字符,而方括号只能匹配单个字符。

?

正则表达式:t(a|e|i|o|oo)n

匹配: tan, ten, tin ,ton , toon

?

4、表示匹配的次数的符号

下面的符号分别显示匹配的次数,这些符号用来确定紧靠该符号左边的符号的出现的次数

?

符号???????????????????? 次数

?*??????????????????????? 符号次数*0次或者多次+1次或者多次?0次或者1次{n}恰好n次{n,m}从n到m次

?

?

?

<!--EndFragment--><!--EndFragment--><!--EndFragment--><!--EndFragment-->

?

5、“否”符号??“?^?”

“?^?”?边界匹配器,行的开头。如果用在方括号内,表示不像匹配的字符。

???

[^X][a-z]

第一个不能为X,后面跟一个a-z任意的一个字符

?

6、圆括号和空白符号

假设要从格式为“June?26?,?1987”的生日日期中提取出月份部分,用来匹配该日期的表达式可以如下图:

?[a-z]+\s+[0-9]{1,2} , \s*[0-9]{4}

?

如何提取出月份部分?只需要在月份周围加上一个圆括号创建一个组,然后用ORO?API?提取出它的值。修改后的正则表达式如下:

?

?([a-z]+)\s+[0-9]{1,2} , \s*[0-9]{4}

?

?

7、其他符号

下表是常见正则表示式创建的快捷符合。

符号等价的正则表达式\d[0-9]\D[^0-9]\w[A-Z0-9]\W[^A-Z0-9]\s[\t\n\r\f]

?

如下面的例子:

可以将所有出现“[0-9]”的地方我们都可以用“\d”

?

?

1、[^abc]?任何字符,除了a、b、c???比如:匹配字符z?为true??。该表达式只能匹配单个字符,对?zz的匹配为false

2、[]?方括号里面的,匹配的是一个字符,

3、[a-d[m-p]]和[a-zA-Z]相似??并集

4、[a-z&&[zhu]]??交集??同时属于a-z和zhu其中的一个字符

[abc]a、b、c[^abc]除a、b、c外的[a-zA-Z]a到z,A-Z中的任意一个字符[a-d[m-p]]a到d,m到p中的任意一个字符[a-z&&[def]]a到z 和def相交的一个字符????

?

?

?

?

横线?-??表示范围的定义?。0-9?表示范围0到9之间的任何数字

?

?

?

^?? 行的开头

$?? 行的结尾

?

?

?

用法:1、?^??行的开头。如、^A[0-9]?--------表示以A开头、后面接一个数字的串

??????2、?$??行的结尾,和?^?用法相似。?如一个以数字1开头,9结尾的手机号码:^1[0-9]{9}9$

?

?

?

public?static?boolean?test02(){

Pattern?p?=?Pattern.compile("([a-z]+)([0-9]+)");

Matcher?m?=?p.matcher("zhuyingming2009");

//m.find()匹配器与模式进行匹配,匹配成功返回true,否则返回false

if(m.find()?==?true){

//匹配成功后,可以用匹配器的group()方法获得组里的内容,

/**

?*??不带参数的group()是获得整个内容

?*??带参数的group(int?start)?start表示第几个组的内容,

?*??start为0时?和不带参数的group()获得的内容一样。

?*?*/

String?temp?=?m.group(2);

System.out.println("group?--->?"?+?temp);

}

boolean?result?=?m.matches();

return?result;

}

<!--EndFragment-->

读书人网 >编程

热点推荐