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

    正则表达式示例表
    字 符 意 义 示 例
    * 任意长度的字符串。 a* 表示: 空字符串、aaaa、a…
    ? 长度为0或者1的字符串。 a? 表示: 空字符串和a。
    + 长度为一个或者多个的字符串。 a+表示:a、aa、aaaaaa…
    . 任意字符。 a. 表示:a后跟任意字符。
    {} 代表上一规则重复数目、
    {1,1,s}包含一组匹配花括号,里面有两个数字和一个字符,表示在指定次数范围内找到字符。 a{3}表示:三个a、
    a{1,3}表示:一个到三个a、
    a{3,} 表示:大于等于三个a、
    {3,7,a}表示在3到7次重复范围内匹配字符a。
    [] 集合,代表方括号中任意一个字符。 [ab] 表示:a或者b都可以、
    [a-z] 表示:从a到z的字符。
    () 组,代表一组字符。 (ab){2}表示:abab。
    a/b 同时满足。 a/b表示:字符串a后跟字符串b才能满足要求。
    a|b 并列,代表符合a或者符合b都可以 a|b表示: 字符串a或者字符串b都满足要求。
    ^ 如果放在开头表示代表该规则必须在字符串的开头,其他位置代表字符本身。
    如果放在[]中的开头表示对该集合取反,其他位置代表字符本身。 ^a表示:a必须在字符串的开头、
    [^a]表示:除了a以外的其他字符。
    $ 如果放在最后表示该规则必须放在最后,其他位置代表字符本身。 a$表示:a必须在字符串最后。
    :s 正则表达式用 :s 表示空格。 a:sb 匹配 a b。
    :a 正则表达式用 :a 表示字符与数字。 a:a 匹配 ab、a6 等。
    :c 正则表达式用 :c 仅表示字符。 a:c 匹配 ac等,不匹配a1等。
    :p 正则表达式用 :p 表示可打印字符。
    :D 正则表达式用 :d 仅表示数字。 a:c 匹配 a1等,不匹配ac等。
    :x00 正则表达式用 :x00 表示ASCII字符。
    :r 正则表达式用 :r 表示回车。
    :N 正则表达式用 :d 表示换行。

    一 正则表达式
    基本元字符集及其含义
        ^     只只匹配行首
        $     只只匹配行尾
        *     只一个单字符后紧跟*,匹配0个或多个此单字符
        [ ]   只匹配[ ]内字符。可以是一个单字符,也可以是字符序列。可以使用-
                表示[ ]内字符序列范围,如用[ 1 - 5 ]代替[ 1 2 3 4 5 ]
             只用来屏蔽一个元字符的特殊含义。因为有时在shell中一些元字符有
               特殊含义。可以使其失去应有意义
        .     只匹配任意单字符
    pattern      只用来匹配前面pattern出现次数。n为次数
    patternm    只含义同上,但次数最少为n
    pattern    只含义同上,但pattern出现次数在n与m之间

    二 grep 的用法
    1 双引号引用
       在grep命令中输入字符串参数时,最好将其用双引号括起来
    2 grep选项
       常用的grep选项有:
       -c 只输出匹配行的计数。
       -i 不区分大小写(只适用于单字符)。
       -h 查询多文件时不显示文件名。
       -l 查询多文件时只输出包含匹配字符的文件名。
       -n 显示匹配行及行号。
       -s 不显示不存在或无匹配文本的错误信息。
       -v 显示不包含匹配文本的所有行。

     -o Print each match, but only the match, not the entire line.


    3 精确匹配
        使用grep抽取精确匹配的一种更有效方式是在抽取字符串后加>。假定现在精确抽取48,则为"48>"
    三 grep和正则表达式
         使用正则表达式时最好用单引号括起来,这样可以防止grep中使用的专有模式与一些shell命令的特殊方式相混淆。
    1 模式范围
        假定要抽取代码为484和483的城市位置,上一章中讲到可以使用[ ]来指定字符串范围,这里用48开始,
        以3或4结尾,这样抽出484或483。grep '48[34]' data.f
    2 不匹配行首
         如果要抽出记录,使其行首不是48,可以在方括号中使用^记号,表明查询在行首开始。
         grep '^[^48]' data.f
    3 匹配任意字符
       如果抽取以L开头,以D结尾的所有代码,可使用下述方法,因为已知代码长度为5个字符:
        grep 'L...D' data.f
    4 日期查询
        一个常用的查询模式是日期查询。先查询所有以5开始以1 9 9 6或1 9 9 8结尾的所有记录。使用模式5..199[6,8].这意味着第一个字符为 5,后跟两个点,接着是199,剩余两个数字是6或8。
         grep '5..199[6,8]' data.f
        查询包含1998的所有记录的另外一种方法是使用表达式[0-9][8],含义是任意数字重复3次,后跟数字8,虽然这个方法不像上一个方 法那么精确,但也有一定作用。
    5 使用grep匹配“与”或者“或”模式
        grep命令加- E参数,这一扩展允许使用扩展模式匹配。例如,要抽取城市代码为2 1 9或2 1 6,方法如下:
        grep -E '219|216' data.f
    6 空行
       结合使用^和$可查询空行。使用- n参数显示实际行数:
        grep '^$' data.f
    7 grep 与类名的使用
       类等价的正则表达式类等价的正则表达式
    [[:upper:]]   [A-Z]               [[:alnum:]] [0-9a-zA-Z]
    [[:lower:]]   [a-z]               [[:space:]] 空格或t a b键
    [[:digit:]]   [0-9]                [[:alpha:]] [a-zA-Z]

  • 相关阅读:
    诸葛马前课andoid app 应用
    C#读写文件总结
    C#写的较完美验证码通用类
    利用C#转换图片格式及转换为ico
    集合>哈希表类Hashtable和SortedList排序列表类
    C# 4.0 新特性dynamic、可选参数、命名参数等
    String.Format格式说明
    C# 4动态编程新特性与DLR剖析
    C#中const和readonly的区别
    2014年7月阅读链接
  • 原文地址:https://www.cnblogs.com/fjping0606/p/4573434.html
Copyright © 2011-2022 走看看