正则表达式字符_Allione_新浪博客

一、元字符

     1)".",点用于匹配除换行符意外的任意字符
     2)"w",匹配字母或数字或下划线或汉字
     3)"s",匹配任意空白符
     4)"d",匹配数字
     5)"",匹配单词的开始或结束
     6)"^",匹配字符串的开始
     7)"$",匹配字符串的结束
二、重复限定符
     1)"*",重复零次或更多次
     2)"+",重复一次或更多次
     3)"?",重复零次或一次
     4)"{n}",重复n次
     5)"{n,}",重复n次或更多次
     6)"{n,m}",重复n到m次
三、分组
     限定符是作用与它左边最近的一个字符,若想多个字符同时被限定,用()小括号分组作为一个整体,
     例:^(ab)*,匹配包含0到多个ab开头的字符串
扩展:
组指的是用括号划分的正则表达式,举个简单的例子:A(B(C)D 
组0:ABCD 
组1:BC 
组2:C 
Macher类中的group(int i)返回对应的组,例如group(0)为ABCD,group(1)为BC,group(2)为C, 
groupCount()返回组数。
  group()  同 group(0) 就是匹配正则表达式整体结果
group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。
四、转义
     把元字符、限定符或者关键字转义成普通的字符,在转义的字符前面加个斜杠即可。在java代码中需要对反斜杠再加一个反斜杠。
     例:匹配(ab)开头的字符串:^(\(ab\))+     +"
五、条件或
     "|"表示或,满足正则里的任何一种条件都当成是匹配成功。
     例:^(130|131|151)d{8}$   匹配130或131或151开头的手机号
六、区间
      []中括号表示区间
      例:[0-9],限定0到9   ;  [A-Z]限定A-Z 
      ^(130|131|151)d{8}$可以改成,^((13[01])|151)d{8}$   
七、断言
     即:返回匹配上字符的前后内容,不返回匹配的字符
     例: "阅读数:641"   
           1)返回641数字,表达式为:\d+( ?=)
           2)返回641数字,表达式为:( ?<= 阅读数:)\d+
           3) ( ?!pattern),匹配非pattern表达式的前面内容,不返回本身
           4)( ?pattern),匹配非pattern表达式的后面内容,不返回本身
八、常用方法:
   1) 匹配
        String  matches()方法。 用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。
   2)切割
        String split()方法;   根据给定正则表达式的匹配拆分此字符串。返回一个数组。
   3) 替换
       String replaceAll(regex,str)方法;     使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
   4) 获取    
       将字符串中的符合规则的子串取出。
      操作步骤:
    1,将正则表达式封装成对象。
    2,让正则对象和要操作的字符串相关联。
    3,关联后,获取正则匹配引擎。
    4,通过引擎对符合规则的子串进行操作,比如取出。
什么情况下使用什么方法呢?????? 
    思路方式:
    1,如果只想知道该字符是否对是错,使用匹配。
    2,想要将已有的字符串变成另一个字符串,替换。
    3,想要按照自定的方式将字符串变成多个字符串。切割。获取规则以外的子串。
    4,想要拿到符合需求的字符串子串,获取。获取符合规则的子串。

例如:
  if ( StringUtils . isNotEmpty ( detailMsg )){ 

 Pattern pattern = Pattern.compile("\\s{1}([A-Z0-9]{6})"); //提取pnr  ​                    Matcherm = pattern.matcher(detailMsg);

        if(m.find()){

           Stringpnr = m.group(1);

     ​      tracer.info("提取出的pnr:" + pnr);

"\\s{1}([A-Z0-9]{6})"

\s{1}:指一个空格

([A-Z0-9]):指匹配字母和数字的组合

{6}:PNR是6位字母和数字的组合​


摘自:https://www.cnblogs.com/Mustr/p/6060242.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值