欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Linux - 基础正则表达式、扩展正则表达式、grep使用正则表达式

程序员文章站 2022-06-17 22:29:12
BRE(基础正则表达式): ^ 匹配行首 $ 匹配行尾 ^$ 空行 . 匹配任意单个字符 * 匹配0个或者多个字符 .* 代表任意多个字符 [] 匹配括号内的字符 [^] 匹配不包含^后的任意字符 BRE(基础正则表达式)只承认的元字符有^$.[....

 BRE(基础正则表达式):

    ^             匹配行首
    $             匹配行尾
    .             匹配任意单个字符
    *             匹配0个或者多个字符
    []            匹配括号内的字符
    [^]           匹配不包含^后的任意字符
   

BRE(基础正则表达式)只承认的元字符有^$.[]* 其他字符识别为普通字符。

ERE  (扩展正则表达式)则添加了() {} ? + | 等。

      只有在用反斜杠“\”进行转义的情况下,字符() {}才会在BRE被当作元字符处理,而BRE中,任何元符号前面加上反斜杠反而会使其被当作普通字符来处理。

ERE(扩展正则表达式)

()  分组过滤被括起来的东西表示一个整体(一个字符)   --》对应的BRE形式为: \(\)
|   表示或者同时过滤多个字符
?   重复前面一个字符0次或1次(.是有且只有1个) --》对应的BRE形式为: \?
+   重复前一个字符一次或多次,至少一次  -》对应的BRE形式为: \+
{}  用于表示重复匹配的次数  -》对应的BRE形式为: \{\}

grep 常见正则表达式

1

2

3

4

5

6

7

8

9

10

11

12

13

*    #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 

.*   #一起用代表任意字符。  

[]   #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。   

[^]  #匹配一个不在指定范围内的字符

\(..\)  #标记匹配字符,如'\(love\)',love被标记为1。   

\<      #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。   

\>      #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。   

x\{m\}  #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。   

x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。   

x\{m,n\}#重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。  

\w    #匹配文字和数字字符,也就是[A-Za-z0-9],

\W    #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。  

\b    #单词锁定符,如: '\bgrep\b'只匹配grep。

grep 使用的是基础正则表达式,如果要使用扩展正则表达式,需转义 或者 直接使用 egrep+扩展正则表达式

1. 匹配包含有两个o的行

grep -n 'o\{2,\}' 2.txt 或者 egrep -n 'o{2,}' 2.txt 

2. 找出Love 或者love开头的行

grep -n '[Ll]ove' 2.txt

3. 找出good或者glad的行

egrep -n 'g(oo|la)d' 2.txt   或者 egrep -n 'good|glad' 2.txt

Linux - 基础正则表达式、扩展正则表达式、grep使用正则表达式

 

 

本文地址:https://blog.csdn.net/u012865840/article/details/107341731