java正则表达式的初步

Java正则表达式

1、句点符号(.

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

正则表达式:t.n

匹配:tan, Ten, tin等等

 

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

如:t.nteen的匹配为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] 任何字符,除了abc   比如:匹配字符true  。该表达式只能匹配单个字符,对 zz的匹配为false

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

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

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

[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 表示范围09之间的任何数字

 

 

 

^   行的开头

$   行的结尾

 

 

 

用法: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-->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值