• shell正则表达式


    前言

      正则表达式是一个字符串处理的标准依据。是使用单个字符串搜索、匹配一系列符合某个语法规则的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的。

    一、正则表达式分类

    • 字符类
    • 数量限定符
    • 位置限定符

    1.1 字符类

    元字符功能举例
    . 匹配除了换行符之外的任意一个字符 #egrep a.b 文件名;表示匹配文件中a跟b之间有一个任意字符的行;
    - 在括号中使用,表示匹配的字符的范围 [0-9]表示的就是从数字0到数字9这个范围的数字;
    [ ] 匹配括号中的任意一个字符 #egrep [0-9] 文件名;表示匹配文件中含有0-9任意一个数字的行;
    [[:xxx:]] grep工具预定义的一些命名字符 [[:digit:]]表示匹配一个数字[0-9],[[:alpha:]表示匹配一个英文字母[a-Z]

    1.2 数量限定符

    字符功能举例
    ? 紧跟在它前面的单元应匹配零次或者一次 ,是通配符的一种,等价于(0,1)  
    + 紧跟在它前面的单元应匹配一次或者多次(至少一次),等价于(1,)  
    * 紧跟在它前面的单元匹配零次或者多次,是通配符的一种 “a”:表示匹配所有内容,包括空行;“aa”:表示匹配至少含有一个a的行;“aaa”:表示匹配至少含有两个a的行;
    {n} 紧跟在它前面的单元应匹配n次 [0-9]{4}:表示匹配4位数字;
    {n,} 紧跟在它前面的单元应匹配至少n次 [0-9]{3,}:表示匹配至少匹配3位数字;
    {,m} 紧跟在它前面的单元应匹配最多m次 [0-9]{,2}:表示匹配数字最多2位
    {n,m} 紧跟在它前面的单元应匹配至少n次,最多m次 [0-9]{1,3}:表示匹配数字至少1位,最多3位;

    1.3 位置限定符

    元字符功能举例
    ^ 匹配行首的位置;a.位于[ ]括号内,则匹配除括号中字符之外的任意字符,也就是对[ ]括号内的字符取反;b.位于[ ]括号外面,则表示以[ ]中的任意一个字符开头 ^a:表示匹配文件中以a开头的行;[ ^0-9]:表示匹配任意一位非数字字符;
    $ 匹配行尾的位置 “a$”:表示匹配以a结尾的行;

    1.4 其他元字符

    元字符功能举例
    转义符,可以将普通字符转为特殊字符,将特殊字符转为普通字符,大多时候是用在将特殊字符的含义取消 ".$“如果前面没有加转义符,则表示匹配以任意一个字符结尾的行,加上转义字符之后表示匹配以”."结尾的行,也就是把“.“的特殊含义取消了,变成普通的”.”符号;
    () 小括号可以将正则表达式的一部分括起来组成一个单元(也就是一个组),可以对整个单元使用数量限定符 ([a-z]-[0-9]){1,3}:表示匹配”字母-数字“这样的格式的组合三次
    | 连接两个子表达式,表示或的关系 a|b表示a或者b;

    1.5 表示集合的字符类描述

    字符描述
    [:alnum:] 表示所有字母数字的集合,[a-z A-Z 0-9]
    [:alpha:] 表示所有字母的集合,[a-z A-Z]
    [:digit:] 表示所有数字,[0-9]
    [:lower:] 表示所有的小写字母的集合,小写[a-z]
    [:upper:] 表示所有大写字母的集合,大写[A-Z]
    [:space:] 表示空格
    [:blank:] 表示所有空格或者制表键(tab键)的集合
    [:punct:] 表示所有的标点字符
    [:cntrl:] 表示所有的控制字符
    [:print:] 表示所有的非控制字符
    [:graph:] 表示所有可视,可打印的字符(不包含空格)
    [:xdigit:] 表示所有十六进制的数字的集合,[0-9 a-f A-F]

    二、正则表达式优先级

    正则表达式与算术表达式类似,遵循优先级顺序,相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从上到下说明了各种正则表达式运算符的优先级顺序,同行表示同级:

    运算符描述
    转义符
    (),(?:),(?=),[] 圆括号和方括号
    *, +, ?, {n}, {n,}, {n,m} 限定符
    ^, $, 任何元字符、任何字符 定位点和序列(即:位置和顺序)
    | “或"操作,字符具有高于替换运算符的优先级,所以”s|get“匹配"s"或"get”。若要匹配"set"或"get",需要使用括号创建子表达式,例:"(s|g)et"
    道阻且长,行则将至!加油! --不是冷漠
  • 相关阅读:
    Linux下的邮件发送
    Linux下用户和raid练习题
    Linux centos7.5操作系统的安装
    Linux chattr文件锁
    Linux系统下root密码丢失解决方案
    周总结2
    课堂作业1
    开课博客
    阅读3
    作业8
  • 原文地址:https://www.cnblogs.com/bushilengmo/p/13864945.html
Copyright © 2020-2023  润新知