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

    grep【global regular expression print】        print lines matching a pattern

    grep [options] regex [file...]

    regex 是指一个正则表达式

    grep选项列表:

    -i          忽略大小写--ignore-case

    -v          invert match

    -c          打印匹配的数量,而不是文本行本身--count

    -l          打印包含匹配项的文件名,而不是文本行本身 --files-with-matches      

    -L          相似于-l 选项,但是只是打印不包含匹配项的文件名--files-without-match

    -n          打印相应的行号--line-number

    -h          应用于多文件搜索,不输出文件名--no-filename

    •  元义字符和原字符

    ^ $ . [ ] { } - ? * + ( ) | 
    注意:正如我们所见到的,当 shell 执行展开的时候,许多正则表达式元字符,也是对 shell 有特殊 含义的字符。把元字符用引号引起来至关重要, 这样可以阻止 shell 试图展开它们。

    .        匹配在此位置的任意一个字符
    ^        锚点,行开头
    $        锚点,行结尾
    [***]      字符集合,元字符被放置到中括号里面后会失去了它们的特殊含义。^表示否定,-表示范围。

    注意:
    • 要包含-:可将-放在开头[-***]
    • 字典顺序和ASCII 顺序不同,[A-Z]不总是工作【查看LANG变量】
    • POSIX字符集

    [:alnum:]          字符数字字符,在ASCII中等价于[A-Za-z0-9]

    [:word:]           增加了下划线

    [:alpha:]          字母字符

    [:blank:]          包含空格和tab

    [:cntrl:]          ASCII的控制码,0-31,127

    [:digit:]          0-9

    [:graph:]          可视字符,33-126

    [:lower:]          小写字母

    [:punct:]          标点符号字符

    [:print:]          可打印字符,在[:graph:]中的所有字符,再加上空格字符。

    [:space:]          在 ASCII 中, 等价于[ vf]

    [:upper:]          大写字母

    [:xdigit:]          表示十六进制数字的字符

    locale命令,查看locale操作。

    • POSIX基本的 Vs.扩展的正则表达式

    BRE:

    可以识别 ^ $ . [ ] *

    字符“(”,“)”,“{”,和 “}”用反斜杠转义后,被看作是元字符

    ERE:

    添加了 ( ) { } ? + |

    在任意元字符之前加上反斜杠会导致其被看作是一个文本字符

    • egrep 【grep -E】

    echo "AAA" | grep -E 'AAA|BBB|CCC'

    为了把 alternation 和其它正则表达式元素结合起来,我们可以使用()来分离 alternation。

    grep -Eh '^(bz|gz|zip)' dirlist*.txt

    • 限定符

    ?          匹配零个或者一个元素

    eg:^(?[0-9][0-9][0-9])?  [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$

    通常圆括号都是元字符(在 ERE 中),所以我们在圆括号之前加上了反斜杠,使它们成为文本字符

    *          匹配零个或多个元素

    [[:upper:]][[:upper:][:lower:] ]*.

    +          匹配一个或多个元素

    ^([[:alpha:]]+ ?)+$

    {}          匹配特定个数的元素

    {n} n次, {n,m} n到m次, {n,}大于等于n次, {,m}小于等于m次

    • find

    find . -regex '.*[^-\_./0-9a-zA-Z].*'

    注意:

    当某一行包含的字符串匹配上了一个表达式的时候,grep 命令会打印出这一行

    find 命令要求路径名精确地匹配这个正则表达式

    • locate查找文件

    locate 程序支持基本的(--regexp 选项)和扩展的(--regex 选项)正则表达式

    • 在less和vim中查找文本

    vim 支持基本的正则表达式

    在扩展表达式中,许多被认为是元字符的字符在基本的表达式中被看作是文本字符,

    只有用反斜杠把它们转义之后,它们才被看作是元字符。

  • 相关阅读:
    吴裕雄--天生自然--Go 语言学习笔记--Go 语言指针
    SVN报错“Failed to run the WC DB work queue associated with”解决办法
    【Oracle学习笔记】Oralce随机数与随机取样
    [CUDA]CUDA编程资源汇总
    [算法竞赛]目标检测常用技巧总结
    [CUDA]CUDA编程实战五——dot向量点积运算
    [CUDA]CUDA编程实战四——矩阵乘法
    [CUDA]CUDA编程实战三——矩阵加法的实现
    [CUDA]CUDA编程实战一——了解CUDA及获取GPU信息
    [CUDA]CUDA编程实战二——向量加法
  • 原文地址:https://www.cnblogs.com/songdechiu/p/9980512.html
Copyright © 2011-2022 走看看