小工具知识网

当前位置: 首页 > 行业知识 > shell脚本 正则表达式

行业知识

shell脚本 正则表达式

2026-11-06 07:47:43 来源:互联网转载

一、正则表达式

1. 介绍

��       正则表达式通常用于判断语句中,用来检查某一字符串是否满足某一格式。正则表达式是由普通字符与元字符组成

()

        普通字符包括大小写字母、数字、标点符号及一些其他符号

        元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符或表达式)在目标对象中的出现模式

()

主要用来匹配字符串(命令结果,文本内容)

2. 分类

  • 基本正则表达式

  • 扩展正则表达式

    man 7 regex

    可以使用 man手册帮助

    3. 元字符

    支持的工具:grep、egrep、sed、 awk。

    字符作用
    \转义字符,可以把一些特殊的符号转换成普通的符号字符,还可以把一些普通字符转换成特殊功能,例:\!、\n、$等
    ^表示匹配字符串开始的位置,匹配行首,例: ^a、 ^#
    $表示匹配字符串末尾的位置,匹配行尾,例: word$、 #$ ;^$表示空行
    .匹配除\n之外的任意的一个字符,例: go.d、g..d
    *匹配前面的字符任意次,包括0次,例: goo*d、go.*d
    .*任意长度的任意字符  不包括0次
    [my]表示匹配[ ]中包含的任一字符
    [^my]表示匹配除[ ]中包含的任一字符
    \d匹配一个数字字符
    \D匹配一个非数字字符。等价于[^0-9]。

    字符

    字符作用
    []匹配指定范围内的任意单个字符,示例:[zhou]   [0-9]   []   [a-zA-Z]   [[:alpha:]]    [0-9a-zA-Z]= [:alnum:]
    [^]匹配指定范围外的任意单个字符,示例:[^zhou] [^a.z] [a.z]
    [:alnum:]字母和数字
    [:alpha:]代表任何英文大小写字符,亦即 A-Z, a-z
    [:lower:]小写字母,示例:[[:lower:]],相当于[a-z]
    [:upper:]大写字母
    [:blank:]空白字符(空格和制表符)
    [:space:]包括空格、制表符 (水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广
    [:cntrl:]不可打印的控制字符(退格、删除、警铃...)
    [:digit:]十进制数字
    [:xdigit:]十六进制数字
    [:graph:]可打印的非空白字符
    [:print:]可打印字符
    [:punct:]标点符号
    \w匹配单词构成部分,等价于[_[:alnum:]]
    \W匹配非单词构成部分。等价于"[^A-Za-z0-9_]"。
    \s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意Unicode 正则表达式会匹配全角空格符
    \S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

    表示次数

    位置锚定

    \b   匹配单词边界处的位置(开头和结尾) \bword\b 等价于 \

    \   匹配单词结尾处的位置

    \B   匹配非单词边界处的位置

    中括号表达式:

    普通中括号包围的字符组,表示某个单个字符匹配中括号内的任意字符即匹配成功

            1. x[abc]z : 可以匹配包含“xaz”、“xbz”、“xcz”的字符串

            2. 取反表示法: 中括号内开头使用 ^ ,表示只要不是中括号内的字符就匹配   

    x[ ^abc]z : 可以匹配包含 “xdz”、“xez” 等字符串,但不能匹配包含“xaz”、“xbz”、“xcz”的字符串 

    特殊元字符在中括号中匹配:

    想要在中括号中匹配: ^ ,需要将其放在 中括号非开头的位置 ,如:[a^]

    想要在中括号中匹配: - ,需要将其放在 开头位置或结尾位置 ,如:[abc-]、[-abc]

    想要在中括号中匹配: ] ,需要将其放在 开头位置 ,如:[]abc]

    扩展正则表达式

    grep -E

    egrep 默认使用的 是扩张正则

    表示次数

    *   匹配前面字符任意次

    ? 0或1次

    + 1次或多次

    {n} 匹配n次

    {m,n} 至少m,至多n次

    {,n}  #匹配前面的字符至多n次,

上一篇:怀旧服服务器模式怎么选择?

下一篇:错过高速服务器入口怎么办?