java正则表达式

正则表达式的匹配字符 
1.普通字符 
字母、数字、汉字、标点符号 
2.非打印字符 
\f 换页符 
\n 换行符 
\r 回车符 
\t 制表符 
\v  垂直制表符 
\s 任何空白字符 包括 \f\n\r\t\v 
\S 任何非空政府 不包括\f\n\r\t\v 
3.特殊字符 







() 
[] 
{} 
\d 
\w 
\D 
\W 




4.次数限定符 

* 0次或多次 
+ 至少1次 
? 0或1次 
{n} 指定n次 
{n,} 至少n次 
{n,m} 匹配n-m次 


5.定位符 

^ 开始 
$ 结束 
\b 单词边界 
\B 非单词边界 


6.选择与分组 

   | 

7.向后引用 

如: 
Pattern pp5=Pattern.compile("(\\d\\d)\\1"); 
s1="1212"; 
Matcher m5=pp5.matcher(s1); 
p(m5.matches());//返回true 

8.操作符的优先级 


(),(?:)(?=),[] 
*,+,?,{n},{n,},{n,m} 
^,$,\anymetacharacter 


二、正则表达式的匹配规则 

1.基本模式匹配规则 

2.字符簇匹配规则 

3.重复出现匹配规则 

4.匹配次数中的贪婪和非贪婪 

5.匹配时反响引用规则 

6.预搜索和懒搜索规则 

三 、使用正则表达式 

1.String类的匹配功能 

matches() 
splits() 
replaceAll() 
replaceFirst() 

2.正则表达式库 

Pattern和Matcher 

3.正则表达式库的4个功能 

find() 

group() 

split() 

replaceAll() 



System.out.println("-----------?:测试--------------"); 

Pattern per1 = Pattern.compile("k(?:aa)"); 
Matcher mcer1 = per1.matcher("kkaab"); 
while (mcer1.find()) { 
System.out.println(mcer1.group()); 
//匹配aab 

System.out.println("-----------?=测试--------------"); 
per1 = Pattern.compile("k(?=aa)"); 
mcer1 = per1.matcher("kkaab"); 
while (mcer1.find()) { 
System.out.println(mcer1.group()); 
            //向后看0宽度匹配nAbcdef 


System.out.println("-----------?!测试--------------"); 
per1 = Pattern.compile("k(?!aa)"); 
mcer1 = per1.matcher("kkaabaa"); 
while (mcer1.find()) { 
System.out.println(mcer1.group()); 
//向后看0宽度匹配k 


System.out.println("-----------?<=测试--------------"); 
per1 = Pattern.compile("(?<=aa)m"); 
mcer1 = per1.matcher("aamkb"); 
while (mcer1.find()) { 
System.out.println(mcer1.group()); 
            //向前看0宽度匹配 
//m 


System.out.println("-----------?<!测试--------------"); 
per1 = Pattern.compile("(?<!aa)k"); 
mcer1 = per1.matcher("aakkb"); 
while (mcer1.find()) { 
System.out.println(mcer1.group()); 
            //向前看0宽度匹配 
//k 




System.out.println("-----------?i和?-i测试--------------"); 
per1 = Pattern.compile(".(?i)abc(?-i)def"); 
mcer1 = per1.matcher("nnnnnnnnnnAbcdef"); 
while (mcer1.find()) { 
System.out.println(mcer1.group()); 
            //匹配nAbcdef 


per1 = Pattern.compile("(?-i)abc(?i)def"); 
mcer1 = per1.matcher("AbcDef"); 
while (mcer1.find()) { 
System.out.println(mcer1.group()); 
//不匹配 



System.out.println("-----------贪婪和懒惰和固定测试--------------"); 
//Pattern p = Pattern.compile(".{3,10}[0-9]");//贪婪 0-10 
//Pattern p = Pattern.compile(".{3,10}?[0-9]");//懒惰 0-5和0-10 
Pattern p = Pattern.compile(".{3,10}+[0-9]");//固定 不匹配没有结果显示 
String s = "aaaa5bbbb6"; 
Matcher m = p.matcher(s); 
while(m.find()) 
System.out.println(m.start() + "-" + m.end());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值