java的正则匹配

1.验证字符串是否匹配的方式:
         1.String 的.matches(regex)方法
      2.Pattern类

//1.输入正则表达式  
    Pattern pattern=Pattern.compile(compile);  
    //2.要匹配的字符  
    Matcher matcher=pattern.matcher(match);  
    //3.比较或查找  
    matcher.matches();
  matcher.find();



2.正则表达式  

2.1 String 对正则表达式的支持,重点掌握如下3个方法:  
matches() 匹配正则表达式 
split() 切分字符串为字符串数组  
replaceAll()


2.2常用匹配符

1.边界匹配器   
^ 行的开头   
$ 行的结尾   
\b 单词边界   
\B 非单词边界   
\A 输入的开头   
\G 上一个匹配的结尾   
\Z 输入的结尾,仅用于最后的结束符(如果有的话)   
\z 输入的结尾   
2.字符类   
[abc] a、b 或 c(简单类)   
[^abc] 任何字符,除了 a、b 或 c(否定)   
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)   
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)   
[a-z&&[def]] d、e 或 f(交集)   
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)   
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)   

3.预定义字符类   
. 任何字符(与行结束符可能匹配也可能不匹配)   
\d 数字:[0-9]   
\D 非数字: [^0-9]   
\s 空白字符:[ \t\n\x0B\f\r]   
\S 非空白字符:[^\s]   
\w 单词字符:[a-zA-Z_0-9]   
\W 非单词字符:[^\w]   
4.1 Greedy 数量词 (贪婪)  
X? X,一次或一次也没有   
X* X,零次或多次   
X+ X,一次或多次   
X{n} X,恰好 n 次   
X{n,} X,至少 n 次   
X{n,m} X,至少 n 次,但是不超过 m 次   

4.2 Reluctant 数量词 (懒惰)  
X?? X,一次或一次也没有   
X*? X,零次或多次   
X+? X,一次或多次   
X{n}? X,恰好 n 次   
X{n,}? X,至少 n 次   
X{n,m}? X,至少 n 次,但是不超过 m 次   

4.3 Possessive 数量词 (强占)  
X?+ X,一次或一次也没有   
X*+ X,零次或多次   
X++ X,一次或多次   
X{n}+ X,恰好 n 次   
X{n,}+ X,至少 n 次   
X{n,m}+ X,至少 n 次,但是不超过 m 次

看下面这段代码:

----------------------------------------------------------------------------------------------------------------------------------------

  String p="df.*g";//贪婪匹配输出dfsgdfegdcfg  
        String p2="df.*?g";//懒惰匹配输出dfsg和 dfeg  
        String p3="df.*+g";//强占模式无输出,匹配不到  
        //1.输入正则表达式  
//      Pattern pattern=Pattern.compile(p);  
//      Pattern pattern=Pattern.compile(p2);  
        Pattern pattern=Pattern.compile(p3);  
        //2.要匹配的字符  
        Matcher matcher=pattern.matcher(match5);  
        while(matcher.find()){  
            System.out.println(matcher.group());  
        }
----------------------------------------------------------------------------------------------------------------------------------------------


重点注意:在java中使用正则表达式的时候,要注意“\”的转义,例如我要匹配$,则要写\$,匹配{则要用\{
下面列几个常用匹配:


1.匹配qq邮箱
[a-zA-Z0-9]+@(qq|QQ).com


2.匹配主机号
^([1-9]|[1-9]\\d{1,3}|[1-6][0-5][0-5][0-2][0-9]|[1-6][0-5][0-5]3[0-5])$ 


3.匹配端口号0~65535<br>  
(^[0-9]|[1-9]\\d{0,1}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9]\\d{0,1}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9]\\d{0,1}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9]\\d{0,1}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值