• 正则表达式


    正则表达式和通配符的区别

    正则表达式:处理的是文本内容中的字符

    通配符:用来处理文件名

    正则表达式(支持的工具:grep、egrep、sed、awk)

    1.代表字符(元字符)

    2.表示次数

    3.位置锚定

    4.分组或其他

    基础正则表达式常见的元字符(字符匹配)

    不表示本来的含义,在正则表达式中有特殊含义的字符

    字符含义
    .单个任意字符,可以是一个汉字
    \               转义字符,用于取消特殊符号的含义
    [ ]匹配指定范围内的任意单个字符
    [:alnum:]字母和数字
    [:alpha:]代表任何英文大小写字符
    [:lower:]小写字母
    [:upper:]大写字母
    [.]任何元字符放在在方括号里都代表他原来的意思,.在里面意思就是.
    [^]匹配指定范围外的任意单个字符,例如[^0-9]匹配任意一位非0-9里的字符

    表示次数

    字符含义
    *匹配前面的字符任意次数,0到正无穷次
    .*任意长度字符,不包括0次
    \?0或一次,可有可无的
    \ +1次到正无穷次
    \ {3 \ }前面的字符出现三次
    \ {3,5 \ }前面的字符出现3到5次
    \ {3, \ }前面的字符最少出现三次
    \ {,5 \ }前面的字符最多出现5次

    位置锚定

    字符含义
    ^代表开头的行
    $代表结尾的行
    ^PATTERN$用于模式匹配整行 (单独一行 只有root)
    ^$空行
    ^[[:space:]]*$空白行
    \ <代表以什么字符为开头,等同于\b
    \ >代表以什么字符为结尾,等同于\b

    echo hello-123 |grep "\ <123"

    echo hello_123 |grep "\ <123"

    echo hello 123 |grep "\ <123"

    除了 字母 数字 下划线其他都算 单词的分隔符

    分组或其他

    分组:用括号( )将需要组合的字符括起来,当作一个整体去处理,如(root)+

    后向引用:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名

    方式为:\1,\2,\3……分组

    \1表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符

    或者

    或者:\|

    扩展正则表达式元字符:(支持的工具:egrep、awk)

    字符含义
    +匹配前面子表达式1次以上,例:go+d,将匹配至少一个o,good、gooood、gooooood都可以匹配到
    匹配前面子表达式0次或1次,例:go?d,将匹配gd或者god
    ()将括号中的字符串看作是一个整体,例:g(oo)+d,将匹配oo整体一次以上,如good、goooood等
    |以或的方式匹配字符串,例:g(oo|la)d,将匹配good或者glad

    实验题

    如何查找ip地址

    ifconfig ens33|grep netmask|grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+'

    ifconfig ens33|grep netmask|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'

    筛选出ip地址的四个分段

    [0-9]\{1,3}\:三位数,每位是0-9的范围

    表示qq号

    echo "aa940132245" |grep "\b[0-9]\{6,12\}\b"

    表示邮箱

    echo "zhou@qq.com" |grep -E "[[:alnum:]_]+@[[:alnum:]_]+\.[[:alnum:]_]+"

    表示手机号

    echo "13705173391"|grep -E "\b1[3456789][0-9]{9}\b"

  • 相关阅读:
    Kubernetes:更新与回滚
    【小白专用 已验证】PHP连接SQLServer数据库
    302. 包含全部黑色像素的最小矩形 BFS
    Linux中nfs:failed: Operation not supported
    PPT的结构设计
    SLAM中线特征的参数化和求导
    Windows 10 资源管理器使用深色主题
    发烧友实测 | OKA40i-C开发板SATA硬盘挂载及读写速率测试
    “乘风破浪”的芒果超媒,能上岸吗?
    Redis进阶篇:发布订阅模式原理与运用
  • 原文地址:https://blog.csdn.net/HanYuHao11/article/details/134646283