正则表达式 总结

Posted yangl517

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式 总结相关的知识,希望对你有一定的参考价值。

正则表达式:
 
 1. 元字符(*、?、+)和文字字符组成
 
 2. #匹配的是一个位置
      脱字符号(^) : 行开始
      美元符号($) : 行结束   
    
 3. #匹配若干字符之一,字符间是‘或’关系,字符组内部和外部,元字符的定义和意义不同
    #一个字符组只能匹配目标文本中的单个字符
    字符组[]
    连字符‘-’,在[]中间,表示范围
    
 4.  排除型字符组(不希望匹配的字符)
       [^]
  
 5.  . 匹配任意字符的字符组
 
 6.   多选结构,匹配任意子表达式 |, 可以匹配任意长度的文本(区别于字符组)
         gr[ea]y、 gr(e|a)y意义相同,
         gr[e|a]y中,|表示普通字符,和前两者的意义不同
         gre|ay表示gre或ay
  
 7. java正则表达式:
         (?i)abc 表示abc都忽略大小写
         a(?i)bc 表示bc忽略大小写
         a((?i)b)c 表示只有b忽略大小写
  
 8.  单词分界符
             #部分不支持\\<、\\>
               \\< 单词的起始位置
               \\> 单词的结束位置
               \\b
  
 9.  ? 表示可选项 u?:表示u可以出现一次也可以不出现
 
 10. + 表示之前紧邻的字符出现一次或多次
 
 11. * 表示之前紧邻的字符出现任意多次或不出现
 
 12. 空格也是普通字符, ( 、)表示元字符
 
 13. 重现次数的范围:区间 min,max
 
 14. 反向引用 表示匹配与表达式先前部分匹配的同样的文本
            ([a-z])([0-9])\\1\\2 : \\1表示[a-z]匹配的内容,\\2表示[0-9]匹配的内容
 

 15. \\ + 元字符 表示对元字符进行转义

 
 16.  (?:....) 表示只分组不捕获,即非捕获型括号
 
 17.        \\s  表示匹配所有'空白'
              \\S  除\\s之外的任何字符
              \\r  回车符
              \\w  [a-zA-Z0-9]
              \\W  [^a-zA-Z0-9]
              \\d
               \\D
  
  
 18.   正则表达式环视结构,不匹配任何字符,只匹配文本中的特定位置
               肯定型顺序环视 (?=...)
                       (?=\\d) : 匹配当前位置的右边是数字
               逆序环视(?<=...),从右向左查看文本
                       (?<=\\d),匹配当前位置的左边有一位数字
               否定顺序环视(?!...) 子表达式不能匹配右侧文本
               否定逆序环视(? 
 19.  (?<=\\d)(?=(\\d\\d\\d)+$) : 只有一个捕获型括号即:(\\d\\d\\d)
 
 20.  (?<=\\d)(?=(\\d\\d\\d)+$)\\1 : \\1即指捕获型括号(\\d\\d\\d)
 
 21.   java中获取第一组括号匹配的文本
              matcher.group(1);
   
 22.   条件判断(?if  then|else)
             (?(?<=NUM:)\\d+|w+) : 表示当前位置的左边是NUM:时,则匹配后面跟一位数字,否则在其他位置尝试使用\\w
 
 
 23.   匹配优先量词 + ? * min, max
           匹配有上限和下限,但是尽可能的匹配多的内容
 
 24.   忽略优先量词,即匹配尽可能少的内容,只需要满足下限,匹配就可以成功
           *? +? ?? min, max? 
   
 25.   占有优先量词: *+ ++ ?+
 
 26.   优先选择最左端的匹配结果
 
 27.   标准量词是优先匹配的
 
 28.   java
              (1).字符组内部\\b表示退格,其他地方均表示单词分界符 (\\b  \\B)
   
              (2). \\G当前匹配的起始位置
   
              (3). (...)  \\1 \\2 捕获型括号
   
              (4). (?:...) 仅分组的括号
   
              (5). Pattern p = Pattern.complie(regx);
   
              (6). Matcher.usePattern(),修改对应的Pattern
   
              (7). 重置Matcher匹配器 matcher.reset(); matcher.reset(text);
                   给当前的Matcher对象配上个新的目标,目标是就该方法的参数;如果不给参数,reset会把Matcher设到当前字符串的开始处。
   
              (8). 修改目标字符串的检索范围(region)
   
               (9). 当前Pattern的捕获型括号的数目,通过matcher.groupCount()获得
   
               (10). matcher.find() 能否找到匹配
                     部分匹配,从当前位置开始匹配,找到一个匹配的子串,将移动下次匹配的位置
   
              (11). matcher.matches() 表示matcher的正则表达式能否完全匹配目标字符串中当前检索范围的那段文本 整个匹配,只有整个字符序列完全匹配成功,才返回True,否则返回False。但如果前部分匹配成功,将移动下次匹配的位置。
   
             (12). matcher.lookAt() 
                  部分匹配,总是从第一个字符进行匹配,匹配成功了不再继续匹配,匹配失败了,也不继续匹配。
     
             (13). matcher.replaceAll(replacement)
                 matcher能够匹配的文本,都会被替换为replacement
     
             (14). matcher.replaceFrist(replacement)
                  只对第一次匹配,进行替换
     
             (15). matcher.quoteReplacement(String text)
                    对text中存在的特殊字符,进行转义,范围转义后的字符串
     
             (16). replacement,中含有'$1',则替换为对应编号的捕获型括号匹配的文本,'$0',替换所有匹配的文本
   
             (17). appendReplacement(StringBUffer sbf, String replacement)
                    将原始目标字符串匹配之前的文本和replacement,存入sbf中
     
             (18). appendTail(StringBuffer sbf)
                   找到所有匹配后,将目标字符串中剩下的文本,存入sbf中
     
   

 

 

以上是关于正则表达式&nbsp;总结的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式匹配

正则进阶之,回溯, (贪婪* 非贪婪+? 独占++)三种匹配量词

正则表达式总结

正则表达式之量词

正则表达式:元字符,量词

正则表达式&nbsp;总结