正则表达式

Posted

tags:

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

regular expression

1、正则表达式概述

常用的正则表达式引擎
POSIX基本正则表达式BRE引擎
POSIX扩展正则表达式BRE引擎

正则表达式: 是一类字符所书写出的模式(pattern)
元字符: 不表示字符本身的意义,用于额外功能性描述
基本正则表达式和扩展正则表达式

技术分享图片

2、基本正则表达式
基本正则表达式的元字符:grep -E
字符匹配:
.: 任意单个字符
[]: 指定范围内的任意单个字符
[0-9],[[:digit:]]
[a-z],[[:lower:]]
[A-Z],[[:upper:]]
[[:alpha:]]
[[:alnum:]]
[[:space:]]
[[:punct:]]
[^]: 指定范围外的任意单个字符 #非#

     次数匹配:用来指定匹配其前面的字符的次数
           *: 任意次
              例子: x*y,xxy,xy,y
              .*: 匹配任意长度的任意字符
          \?: 0次或1次
              x\?y,xy,y,xxy

    贪婪模式:尽可能的长的去匹配字符;
          \{m\}:   匹配m次
          \{m,n\}:
          \{m,\}:  至少m次
          \{0,n\}: 至多n次

     锚定:
           ^:开头
           $:结尾 
          ^$: 空白行

          \<: 定位词首
          \b: 分别代替词首词尾
          \>: 定位词尾

     分组:
          \(\)
              \(ab\)*xy
     引用:
          \1: 后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式所匹配到的内容
          \2:
          ...

             \(a.b\)*xy\1:  #a6bxya6b

             He like his lover.
             She love her liker.
             He love his lover.
             She like her liker.

             grep ‘\(l..e\).*\1r‘ test.txt

3、扩展正则表达式
扩展正则表达式的元字符:
egrep:使用扩展正则表达式来构建模式,相当于grep -E

      字符匹配:
           .: 任意单个字符
          []: 指定范围内的任意单个字符
              [0-9],[[:digit:]]
              [a-z],[[:lower:]]
              [A-Z],[[:upper:]]
              [[:alpha:]]
              [[:alnum:]]
              [[:space:]]
              [[:punct:]]
         [^]: 指定范围外的任意单个字符 #非#

      次数匹配:
           *:   匹配其前面的字符任意次
           ?:   匹配其前面的0或1次
           +:  匹配其前面的字符至少1次
          {m}:  匹配其前面的字符m次
          {m,n}:至少m次,至多n次
          {m,}: 至少m次
          {0,n}:至多n次

      锚定:
             ^:行首
             $:行尾 
            ^$: 空白行

            \<,\b: 词首

            \>, \b: 词尾

      分组:
         (): 分组
         |: 或者,ac|bc

特殊字符
[:alnum :] 文字数字 匹配任意字母字符0-9 a-z A-Z
[:alpha:] 文字 匹配任意字母,大写或小写
[:digit:] 数字 0-9
[:graph:] 非空字符( 非空格控制字符)
[:lower:] 小写字符
[:upper:] 大写字符
[:cntrl:] 控制字符
[:print:] 非空字符( 包括空格)
[:punct:] 标点符号
[:blank:] 空格和TAB字符
[:xdigit:] 16 进制数字
[:space:] 所有空白字符( 新行、空格、制表符)

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

markdown 正则表达式模式片段

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

攻破难啃的骨头-正则表达式(转)

正则表达式的贪婪和非贪婪模式