正則表達式元字符




正則表達式概述

是指一個用來描述或者匹配一系列符合某個句法規則的字符串的單個字符串。在很多文本編輯器或其他工具裏,正則表達式通常被用來檢索和/或替換那些符合某個模式的文本內容。許多程序設計語言支持利用正則表達式進行字符串操作。例如,在Perl中就內建了一個功能強大的正則表達式引擎。正則表達式這個概念最初是由Unix中的工具軟件(例如 sedgrep)普及開的。正則表達式通常縮寫成“regex”


PCRE正則庫

(Perl Compatible Regular Expressions中文含義:perl語言兼容正則表達式)是一個用C語言編寫的正則表達式函數庫,由菲利普.海澤(Philip Hazel)編寫。PCRE是一個輕量級的函數庫,PCRE十分易用,同時功能也很強大,性能超過了POSIX正則表達式庫和一些經典的正則表達式庫


開啓pcre posix正則表達式支持,常用的有這三個指令grep,sed,awk

1grep –P =grep –E = egrep

2sed –r

3awk --posix


元字符

元字符

功能

示例

匹配對象

^

行首定位符

'^love'

匹配所有以love開關的行

$

行尾定位符

'love$'

匹配所有以love結尾的行

[]

匹配一組字符中的一個字符

'[Ll]'ove

匹配loveLove的行

[^]

匹配不在一組字符中的一個字符

'[^A-Z]ove'

匹配一個不在AZ之間的字符,並且該字符緊跟着是ove的行

.

匹配一個字符

'l..e'

匹配包含一個l,後跟兩個字符,再跟一個e的行

x{m}

字符x的重複m

'o{5}'

匹配連續出現5o的行

x{m,}

字符x至少重複m

'o{5,}'

匹配連續出現至少5o的行

x{m,n}

字符x至少m,但不能超過n

'o{5,10}'

匹配連續出現至少5o,但不能超過10o的行

aa|bb

匹配aabb

love|hate

匹配lovehate這兩個字符串之一

()

字符組

love(able|ly)(ov){1,}

匹配loveablelovely並且緊跟在其後ov的一次或多次出現.

並且將()中的內容放在寄存器中最左側第一個叫做\1,後續再引用這個存在器中的內容可以使用\1,最多可以用9個寄存器\1 \2 ….\9.

*

匹配零個或多個前一個字符

' *love'

匹配包含零個或多個空格後有love的行





練習素材

[work@3server shell]$ cat datafile.txt

northwest       NW     Charles Main            3.0     .98    3       34

western         WE     Sharon Gray             5.3     .97    5       23

southwest       SW     Lewis Dalsass           2.7     .8     2       18

southern        SO     Suan Chin               5.1     .95    4       15

southeast       SE     Patricia Hemenway       4.0     .7     4       17

eastern         EA     TB Savage               4.4     .84    5       20

northeast       NE     AM Main Jr.             5.1     94     3       13

north           NO      Margot Weber            4.5     .89    5       9

central         CT     Ann Stephens            5.7     .94    5       13






正則表達式練習


範例1



範例2



範例3



範例4





範例5


範例6



範例7












範例8



範例9



範例10



範例11




範例12
















範例13








範例14


範例15




範例16


範例17


範例18







範例19  grep –P = grep –E = egrep


























範例20 (這個例子先了解一下即可,後續再學sed,awk)







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章