zoukankan      html  css  js  c++  java
  • POSIX正则表达式

    POSIX正则表达式

    分类: 项目相关 2131人阅读 评论(0) 收藏 举报

    正则表达式(regular expression)是一种表示方式,在许多地方均有对此的支持,如命令grep、语言Python、工具vim等。但是这里仅讨论POSIX正则表达式,显然它与其他正则表达式(如传统的Unix正则表达式)存在稍许的差异。POSIX正则表达式分为:BRE(Basic Regular Expression)和ERE(Extended Regular Expressions)。以下是有关POSIX正则表达式的元字符(meta)的说明:

    /
    用于关闭后续字符的特殊意义。有时用于反向的打开后续字符的特殊意义。
    .
    (点号)匹配任意单个的字符,但NULL除外。
    *
    匹配任意数目的字符(可以为0)。以ERE来说,此前置字符可是正则表达式,如.*代表了匹配任意字符的长度。但对于BRE而言,*置于正则表达式的第一个字符,不具任何特殊意义。
    ^
    (脱字号)匹配出现在行首或字符串开始位置的空字符串。ERE:置于任何位置都具特殊含义;BRE:仅在正则表达式的开头具有此特殊含义。
    $
    匹配出现在行末的空字符串。ERE:置于任何位置都具特殊含义;BRE:仅在正则表达式的结尾具有此特殊含义。
    [...]
    方括号表达式,匹配方括号内的任意一字符。连字符(-)指的是连续字符的范围。^符号置于方括号里第一个字符则有反向含义:指的是匹配不在列表内(方括号内)的任意字符。作为首字符的一个连字符或是结束方括号(]),则被视为列表的一部分。所有其他的meta字符也为列表的一部分。

    以下只属于BRE
    /{n-m}
    区间表达式,匹配在它之前的单个字符重现的次数区间。/{n/}指的是重复n次;/{n,/}则为至少出现n次重复,而/{n,m}为重现n至m次。
    /( /)
    /(与/)间的模式存储在特殊的“保留空间”。最多可将9个独立的子模式存储在单个模式中。如/(ab/).*/1,指的是匹配于ab组合的两次重现。
    /n
    重复在/(与/)方括号内第n个子模式至此点的模式。n为1至9的数字,由左开始。

    以下只属于ERE
    {n,m}
    与先前提及的BRE的/{n,m/}一样,只不过方括号前没有反斜杠。
    +
    匹配前面正则表达式的1个或多个实例
    ?
    匹配前面正则表达式的0个或1个实例
    |
    匹配于|符号前或后的正则表达式。
    ( )
    匹配于方括号括起来的正则表达式群。

    POSIX方括号表达式:
    1、字符集
    [::]
    2、排序符号
    [..]
    3、等价字符集
    [=
    =]

    具体如下:
    [:alnum:]
    数字字符
    [:alpha:]
    字母字符
    [:blank:]
    空格与定位字符
    [:cntrl:]
    控制字符
    [:digit:]
    数字字符
    [:graph:]
    非空格字符
    [:lower:]
    小写字母字符
    [:print:]
    可显示的字符
    [:punct:]
    标点符号字符
    [:space:]
    空白字符
    [:upper:]
    大些字母字符
    [:xdigit:]
    十六进制数字

    同时在使用时运算符存在顺序问题,以下是由高至地的:
    BRE:
    1、[. .] [= =] [: :]
    2、/meta
    3、[]
    4、/( /) /digit
    5、* /{ /}
    6、无符号
    7、^ $ .

    ERE:
    1、[. .] [= =] [: :]
    2、/meta
    3、[]
    4、()
    5、* + ? {}
    6、无符号
    7、^ $ .
    8、|


     




  • 相关阅读:
    Tomcat下使用war包发布项目
    shell编程报错:“syntax error near unexpected token `”
    undo表空间不足,ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS2'
    HTML快速入门
    HTTP协议快速入门
    Java Web应用的开发模式
    使用Jekyll搭建免费的Github Pages个人博客
    前端模拟API数据的两种方式
    Node.js学习笔记
    socket.io笔记
  • 原文地址:https://www.cnblogs.com/muxiaoye/p/308ecdfb23c98b2a177e8e6eab7293a9.html
Copyright © 2011-2022 走看看