正则表达式

正则表达式

Regular Expression,正则表达式,简写为RegExp。
由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示通配的功能

  • BRE :Basic RegExp,基本正则表达式
  • ERE :Extend RegExp,扩展正则表达式
  • PCRE :Perl Compatible RegExp,Perl兼容的正则表达式

    程序支持: grep,sed,awk,vim, less,nginx,varnish等

    正则表达式引擎: 采用不同算法,检查处理正则表达式的软件模块PCRE

元字符分类:字符匹配、匹配次数、位置锚定、分组

基本正则表达式元字符

  • 字符匹配
    . 匹配任意单个字符
    [] 匹配指定范围内的任意单个字符
    [^]  匹配指定范围外的任意单个字符
    [:alnum:]  字母和 数字
    [:alpha:]  代表任何英文大小写字符,亦即 A-Z, a-z
    [:lower:]  小写字母 [:upper:]  大写字母
    [:blank:]  空白字符(空格和制表符)
    [:space:]  水平和垂直的空白字符(比[:blank:] 包含的范围广)
    [:cntrl:]  不可打印的控制字符(退格、删除、警铃...) )
    [:digit:]  十进制数字 [:xdigit:] 十六进制数字
    [:graph:]  可打印的非空白字符
    [:print:]  可打印字符
    [:punct:]  标点符号
  • 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
    *  匹配 前面的字符任意次,包括0次 次
    贪婪模式:尽可能长的匹配

    .*  任意 长度的任意字符

    \?  匹配 其前面的字符0 或1次 次

    \+  匹配 其前面的字符至少1次 次

    \{n\}  匹配 前面的字符n次 次

    \{m,n\}  匹配 前面的字符至少m 次,至多n次 次

    \{,n\}  匹配 前面的字符至多n次 次

    \{n,\}  匹配 前面的字符至少n次 次
  • 位置锚定:定位出现的位置
^  行首锚定,用于模式的最左侧

$  行尾锚定,用于模式的最右侧

^PATTERN$ 用于模式匹配整行

^$ 空行

^[[:space:]]*$ 空白行

\< 或 或 \b  词首锚定,用于单词模式的左侧

\> 或 或 \b  词尾锚定;用于单词模式的右侧

\<PATTERN\> 
  • 分组
    分组:\(\)将一个或多个字符捆绑在一起,当作一个整体进 行处理,如:\(root\)\+

    分组括号中的模式匹配到的内容会被正则表达式引擎记录于 内部的变量中,这些变量的命名方式为: \1, \2, \3, …
    \1 表示从左侧起第一个左括号以及与之匹配右括号之间的 模式所匹配到的字符

    示例:
            \(string1\+\(string2\)*\)

            \1 :string1\+\(string2\)*

            \2 :string2

    后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身
        grep "\(root\).*\1" /etc/passwd

    或者  \|

    示例:
            a\|b: a或b

            C\|cat: C或cat

            \(C\|c\)at:Cat或cat
扩展正则表达式

egrep == grep -E

egrep其实很简单,就是把grep里的斜线去掉了,不过有些还没有去掉。

  • 字符匹配:

    . 任意单个字符
    [] 指定范围的字符
    [^] 不在指定范围的字符
    
  • 次数匹配:

    *:匹配前面字符任意次
    ?:0或1次
    +:1次或多次
    {m}:匹配m次
    {m,n}:至少m,至多n次
    
  • 位置锚定:

    ^:行首
    $:行尾
    \<, \b :语首
    \>, \b :语尾
    
  • 分组:
()
后向引用:\1, \2, …

示例:
        a|b: a或b
        C|cat: C或cat
        (C|c)at:Cat或cat
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值