zoukankan      html  css  js  c++  java
  • Shell grep 和正则

    在grep中正则有三种模式, 分别是基础(-G), 扩展(-E)和Perl(-P)模式

    basic 模式

    不支持d, 支持w s . 

    ?, +, {, |, (, and ) 在basic 模式中也失去了其在正则式中的特殊含义

    如果想在basic 中使用这些特殊字符,可以用来转义

    1 # echo "- 2222-" |grep -o '[0-9]+'
    2 null
    3 # echo "- 2222-" |grep -o '[0-9]+'
    4 2222

    egrep 表示扩展模式, 实际上是grep -E 的别名

    扩展模式不支持贪婪, d,  [w]

    # echo "- Aa2222-" |grep -oE '[w] 
    输出为空.

    同样扩展模式不支持捕获

    1. (?:X)  匹配但是非捕获
    2. pattern(?=X)     匹配但是非捕获, 向X前匹配
    3. (?<=X) pattern  匹配但是非捕获, 向X后匹配
    4. pattern(?!X)      与2相反, 表示pattern后面是非X
    5. (?<!X) pattern   与3相反, 表示pattern前面非X

    Perl正则模式支持贪婪, 不支持(?:pattern)的非捕获模式

    1 # echo "- 2222-" |grep -oP '[0-9]+?'  #非贪婪模式
    2 2
    3 2
    4 2
    5 2
    6 
    7 # echo "- 2222-" |grep -oP '[0-9]+'  #贪婪模式
    8 2222
  • 相关阅读:
    logging模块,序列化,range模块
    生成器以及推导式
    递归,自定义模块,time模块,datetime
    装饰器,内置函数
    函数名的使用以及第一类对象,闭包,迭代器
    python文件操作
    面向对象
    os sys hashlib
    文件操作
    logging模块
  • 原文地址:https://www.cnblogs.com/v394435982/p/5165860.html
Copyright © 2011-2022 走看看