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

    一 正则表达式概述

    正则表达式:又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或
    RE),是计算机科学的一个概念。正则表达式由元字符组成,通常被用来检索、替换那些符合某个模式
    (规则)的文本(许多程序设计语言都支持利用正则表达式进行字符串操作)。


    元字符:是一类可以表达出超越其字面本身含义的特殊字符

    shell元字符(也称为通配符): 由shell解释器来解析,如rm -rf *.pdf,元字符*Shell将其解析为任
    意多个字符
    正则表达式元字符 : 由各种执行模式匹配操作的程序来解析,比如vi、grep、sed、awk
    例如:vim示例:
     :1,$ s/tom/EGON/g # 如anatomy、tomatoes及tomorrow中的“tom”被替换了,而Tom确没 
    被替换 
    :1,$ s/<[Tt]om>/EGON/g
    
    

    二 正则表达式元字符

    2.1 基本正则元字符集
    元字符      功能
    ^           # 行首       
    $           # 行尾
    .           # 除了换行符以外的任意单个字符
    *           # 前导字符的零个或多个
    .*          # 所有字符
    []          # 字符组内的任一字符
    [^]         # 对字符组内的每个字符取反(不匹配字符组内的每个字符)
    ^[^]        # 非字符组内的字符开头的行
    [a-z]       # 小写字母
    [A-Z]       # 大写字母
    [a-Z]       # 小写和大写字母
    [0-9]       # 数字
               # 用来转义元字符
    <          # 词首定位符 单词一般以空格或特殊字符做分隔、连续的字符组成
    >          # 词尾定位符
    (..)      # 匹配稍后将要使用的字符的标签
    x{m}      # 字符x重复出现m次
    x{m,}     # 字符x重复出现m次以上
    x{mn}     # 字符x重复出现m到n次
              # 详细解释见下一篇随笔
    $'a	b'     # 匹配换行符和制表符
    [root@web ~]# echo -e "a
    b" |grep $'a
    b' 
    a
    b
    

    2.2 扩展正则元字符集
    # 扩展正则元字符
    +             # 匹配一个或多个前导字符
    ?             # 匹配零个或一个前导字符
    a|b           # 匹配a或b
    ()            # 组字符
    (..)(..)12  # 标签匹配字符
    x{n}          # x 出现n次
    x{n,}         # x出现n次至无穷次
    x{n,m}        # x出现n次至m次
    
    # 若想使用扩展正则
    grep加-E 或 egrep 或转义
    sed 加 -r 参数 或转义
    AWK 直接支持大多数扩展正则,更多支持需要加选项--posix选项
    
    

    三 grep使用元字符总结

    grep: 使用基本元字符集 ^, $, ., *, [], [^], < >,(),{}
    egrep(或grep -E): 使用扩展元字符集 ?, +, { }, |, ( )
    # 注:grep也可以使用扩展集中的元字符,仅需要对这些元字符前置一个反斜线
    w 所有字母与数字,称为字符[a-zA-Z0-9] 'l[a-zA-Z0-9]*ve' 'lw*ve'
    W 所有字母与数字之外的字符,称为非字符 'love[^a-zA-Z0-9]+' 'loveW+'
     词边界 'love' '<love>'
    

    四 计算机定义的字符分类(posix)

    # 表达式       功能                   示例
    [:alnum:]     字母与数字字符                      [[:alnum:]]+ 
    [:alpha:]     字母字符(包括大小写字母)             [[:alpha:]]{4}
    [:blank:]     空格与制表符                        [[:blank:]]*
    [:digit:]     数字字母                            [[:digit:]]?
    [:lower:]     小写字母                            [[:lower:]]{5,}
    [:upper:]     大写字母                            [[:upper:]]+
    [:punct:]     标点符号                            [[:punct:]]
    [:space:]     包括换行符,回车等在内的所有空白      [[:space:]]+
    
  • 相关阅读:
    preliminary->advanced exam selections
    Maven入门
    Ajax和Json
    过滤器和监听器
    JSTL标签库
    JSP与EL表达式
    dom4j与XML文档操作
    会话管理
    登录之验证码
    WEB之文件下载
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/14042639.html
Copyright © 2011-2022 走看看