正则表达式的使用

    技术2025-10-18  14

    0、前言:

    1)grep与find的区别:

    grep是查找文本,查找文件的内容;find 是查找文件,在目录中查找文件。

    2)我们会使用egrep (grep的扩展板extended grep)来查找文本。

    3)正则表达式与语言无关,是独立的

    4)grep 查找的结果是 只要包含 要查找的字符串的 都会显示。而是完全匹配。

    5)正则表达式也是匹配文件的内容

    1、正则表达式字符类格式

    注意:字符类的都是一个字符。

     []匹配 []内任意一个字符;

    [^xy] 有[]表示匹配任意一个字符,^表示该一位是非x,非y任意一个字符。

    [[:alpha:]]  一般用[a-zA-Z]代替;

    [[:digit::]]一般用[0-9]代替

    注意:[0-9a-zA-Z]之间是没有空格的。

    2、正则表达式数量限定符

     注意:数量限定符,可以匹配多个字符。

     ?*在正则表达式中与之前的含义不尽相同,在此处是表示匹配前一个字符的个数。

    单写个?或+或* ,能显示全文,但是并不是匹配全文(字符没有变成红色)

     前面添加. 即匹配任意字符。

    egrep 'h*' test.sh                  ----------->匹配h 、hh、hhh、hhhh等多个h;

    egrep '[^h]' test.sh               ----------->匹配非h的字符,只要不是h就都能匹配

     当t.sh中包含没有h字符的行时,‘h*’和‘h?’会显示不包含h的行,‘h+’则不会。

    3、正则表达式位置限定符

     

    位置限定符可以使grep 有模糊查找变为精确的查找字符。 

    \b用来查找单词

    \B用来查找中间字母是xx的单词。

    4、其他特殊字符 

     5、基础正则与扩展正则的区别:

    基础正则 :Basic   正则  --------->使用 grep 

    1)?+{}()            ------>为普通字符,需要加转义才行,----->表达式显得复杂

    2)grep    -E      表达式                  ------------->加上-E参数,1)中的普通字符就不用转义了。

    扩展正则:Extented 正则  ------->使用egrep  

    ------------>除了基础正则的方法2)外,可以使用  egrep (grep  -E)                ---->?+{}() 也不用转义了。

    6、示例

    注意:

    1)需要使用双引号或者单引号括regexp表达式,否则的话,过滤的结果不对。

    2)没有添加数量限定符的时候,字符串有几个符号,就会精确匹配几个字符。

    egrep  'hello'  test.sh            --------------->test.sh中查找字符串 hello

    3)egrep  的结果,显示的要找字符串的所在行,字符串会标红显示,会显示l和非o的两个字符。

    4)egrep '[^o]' t.sh  会匹配所有不是o的一个字符

    egrep '[0-9]{1,3}\.[0-9]*'  test.sh      ------------->匹配1-3数字.任意多的数字

    egrep '^hello'  test.sh   --------->以hello开头的行

    egrep 'hello$'  test.sh   --------->以hello结尾的行

    egrep '^hello$'  test.sh   --------->匹配仅有hello的行(hello hello 为什么匹配不出来?

    ---------->原因是^$两个符号都有的意思是,二者中间的内容是hello,且开头是hello,末尾是hello 故只能是hello)

    egrep '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' test.sh ------->以数字开头,以数字结尾的4个数字的 ip 地址;

    ^$实际上除指定格式外,也指定了行中的内容及个数;所以中间什么都没有即表示空行。

    egrep '^([0-9]{1,3}\.){3}[0-9]{1,3}$' test.sh ------->以数字开头,以数字结尾的4个数字的 ip 地址;//简写

    egrep  '\<th' test.sh    ------>匹配以th开头的单词

    eprep  'th\> test.sh   ----------》匹配以th结尾的单词

    eprep  '\<th\> test.sh   ----------》匹配th单词

    Processed: 0.014, SQL: 9