正則表達式及其用法
1. 什么是正則表達式
正則表達式是Global search REgular expression and Print out the line的縮寫。是一類用字符所書寫的模式,其中許多字符并不表示其字面意義,而是表達控制或通配等功能。
在Linux中,用正則表達式搜索文本的常用命令:
grep: 使用基本正則表達式匹配文本。
egrep:使用擴展正則表達式匹配文本,同: grep –E。
fgrep: 快速grep,不支持正則表達式,不識別元字符。
語法格式:
grep [option]… 'PATTERN' FILE…
2. 基本正則表達式
(1) 字符匹配
(a) .: 匹配任意單個字符。
(b) []:匹配指定范圍內的任意單個字符。
[0-9] 或[[:num:]]:匹配任意當個數字
[a-z]或[[:lower:]]:匹配任意單個小寫字母
[A-Z]或[[:upper:]]:匹配任意一個大寫字母
[[:space:]]:匹配空格或制表符
[[:punct:]]:匹配特殊字符
[[:alpha:]]:匹配單個任意字符
[[:alnum:]]:匹配單個字母或數字
(c) [^]:匹配不包括指定范圍內的任意單個字符。
(2) 次數匹配
(a)*: 匹配它前面出現的字符任意次。
(b)\?: 匹配它前面的字符0次或1次。
(c)\{m\}: 匹配它前面出現的字符m次。
(d)\{m,n\}: 匹配它前面出現的字符至少m次,至多n次。
(e)\{m,\}: 匹配它前面出現的字符至少m次。
(f)\{,n\}: 匹配它前面出現的字符至多n次。
(g).*: 匹配任意長度的任意字符.
(3) 位置錨定
(a)^: 錨定句首,寫在模式的最左面。
(b)$: 錨定句尾,寫在模式的最右端。
(c)\<: 錨定詞首,寫在模式的最左面。
(d)\>: 錨定詞尾,寫在模式的最右面。
(e).* : 空白行
(4) 分組\(\)
分組中的模式匹配到的內容,可由正則表達式引擎記憶在內存中,之后可被引用。
(5) 引用 \#
引用第#個括號中匹配到的內容,而不是模式本身。
如:\(ab\?c\).*\1 abcmnabc 匹配
3. 擴展正則表達式
(1) 字符匹配(同基本正則表達式)
(a) .: 匹配任意單個字符。
(b) []:匹配指定范圍內的任意單個字符。
(c) [^]:匹配不包括指定范圍內的任意單個字符。
(2) 次數匹配
(a)*: 匹配它前面出現的字符任意次。
(b)?: 匹配它前面的字符0次或1次。
(c)+: 匹配前面出現的字符至少一次。
(c){m}: 匹配它前面出現的字符m次。
(d){m,n}: 匹配它前面出現的字符至少m次,至多n次。
(e){m,}: 匹配它前面出現的字符至少m次。
(f){,n}: 匹配它前面出現的字符至多n次。
(3) 位置錨定 (同基本正則表達式)
(4) 分組()
(5) 引用 \# (同基本正則表達式)
(6) 或者 |
如:a|b 表示 a或b
ab|cd 表示 ab或cd
練習:
1.新建一個文本文件,假設有如下內容:
He like his lover.
He love his lover.
He like his liker.
He love his liker.
找出其中最后一個單詞是由此前某單詞加r構成的行。
[root@centos7 ~]# cat ./liker.txt He like his lover. He love his lover. He like his liker. He love his liker. [root@centos7 ~]# grep '\<\(.*\)\>.*\1r' ./liker.txt He love his lover. He like his liker. [root@centos7 ~]# |
2.寫一個模式,能匹配合理的ipv4地址;1.0.0.0-239.255.255.255
[root@centos7 ~]# cat ./ip.txt 249.1.0.1 229.2.1111.1 0.0.0.0 255.255.255.255 239.255.255.255 1.0.0.0 1000.0.0.0.0 1.1000.0.0 1.2.2000.0 1.2.3.4000 127.0.1.10 [root@centos7 ~]# grep -o -E '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-3][0-9])((\.)([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}\>' ./ip.txt 239.255.255.255 1.0.0.0 1.2.3.40 127.0.1.10 [root@centos7 ~]# |
原創文章,作者:浪跡天涯,如若轉載,請注明出處:http://www.www58058.com/7969