正則表達式Regular Expression特殊字符

正則表達式(regex)


瞄位: ^和$

^ :匹配一個輸入或一行的開頭,/^a/匹配”an A”,而不匹配”An a”

$ :匹配一個輸入或一行的結尾,/a$/匹配”An a”,而不匹配”an A”

“^The”:表示所有以"The"開始的字符串(“There”,"The cat"等);

“Jerry$”:表示所有以"Jerry"結尾的字符串;

貪婪元字符:+ , * 與?

* :匹配前面元字符0次或多次,/ba*/將匹配b,ba,baa,baaa

+ :匹配前面元字符1次或多次,/ba*/將匹配ba,baa,baaa

? :匹配前面元字符0次或1次,/ba*/將匹配b,ba

多次匹配:

{n} :精確匹配n次;

{n,m} :匹配n-m次;

{n,} :匹配n次以上;

{,n} : 匹配0-n個;

*? 重複任意次,但儘可能少重複

+? 重複1次或更多次,但儘可能少重複

?? 重複0次或1次,但儘可能少重複

{n,m}? 重複n到m次,但儘可能少重複

{n,}? 重複n次以上,但儘可能少重複

或操作符:|

“x|y” :匹配x或y

“hi | hello”:表示一個字符串裏有"hi"或者"hello";

“(b|cd)ef”:表示"bef"或"cdef";

“(a|b)*c”:表示一串"a"“b"混合的字符串後面跟一個"c”;

通用元字符:". "

如果想只匹配點,那麼需要轉義字符 “.” ,匹配其他元字符也一樣,用轉義字符就可以;

'.'可以替代除換行符之外的任何字符;

“a.[0-9]”:表示一個字符串有一個"a"後面跟着一個任意字符和一個數字;

“^.{3}$”:表示有任意三個字符的字符串(長度爲3個字符);

方括號:[ ]

方括號表示某些字符允許在一個字符串中的某一特定位置出現:

“[ab]”:表示一個字符串有一個"a"或"b"(相當於"a|b");

“[a-d]”:表示一個字符串包含小寫的’a’到’d’中的一個(相當於"a|b|c|d"或者"[abcd]");

“^[a-zA-Z]”:表示一個以字母開頭的字符串;

“[0-9]%”:表示一個百分號前有一位的數字;

“,[a-zA-Z0-9]$”:表示一個字符串以一個逗號後面跟着一個字母或數字結束;

你也可以在方括號裏用’‘表示不希望出現的字符,’'應在方括號裏的第一位。(如:"%[^a-zA-Z]%"表示兩個百分號中不應該出現字母)。

字符集

[xyz] :字符集(character set),匹配這個集合中的任一 一個字符(或元字符)

[^xyz] :不匹配這個集合中的任何一個字符

\b :匹配一個單詞的邊界

\B :匹配一個單詞的非邊界

\d :匹配一個字數字符,等同於[0-9]

\D :匹配一個非字數字符,等同於[^0-9]

\n :匹配一個換行符

\r :匹配一個回車符

\s :匹配一個空白字符,包括n,r,f,t,v等

\S :匹配一個非空白字符,等於/[^nfrtv]/

\t :匹配一個製表符

\v :匹配一個重直製表符

\w :匹配字母或數字或下劃線或漢字,等於[a-zA-Z0-9_]

\W :匹配字母或數字或下劃線或漢字以外的字符,等於[^a-zA-Z0-9_]

\x :匹配十六進制數字,等同於[0-9A-Fa-f]。

\X :匹配十六進制數字之外的任意字符,等同於[^0-9A-Fa-f]。

匹配單詞

只匹配單獨的單詞Jerry:”< Jerry \ >“ ,這個只匹配單詞兩邊爲空白(空格、製表等)的單詞,Jerry_Tom這類則匹配不到。

匹配單詞開頭: <

匹配單詞結尾:>

搜索&替換

(搜索)命令: /正則表達式

(替換)命令: s/正則表達式/替換字符串/選項

選項可以是:i 表示不論大小寫都匹配; g 表示匹配當前行中的所有匹配的字符串; d 表示刪除

把所有單詞help或Help都改爲大寫的HELP : %s/[Hh]elp/HELP/g

%表示匹配當前文檔中所有行,你也可以指定部分行 1,20 s/[Hh]elp/HELP/g

使用單個空格替換一個或多個空格:%s/ \+/ /g

刪除所有空行(沒有任何字符,除了一個回車符)

:g/^$/d
:g/^[ tab]*[ tab]*$/d

刪除含有某些字符的行:g/ERROR/d

刪除每行的所有的前導空格:%s/^ *//g

在文件中的每一行的開始插入->(或者其它字符):%s/^/->/

在每一行的尾部加上一個句號(或其他字符):%s/$/。/g

刪除以數字開頭的行 : %s/^\d.*$//g

刪除以[a,b,c]開頭的行 : %s/^[a|b|c].*$//g

刪除重複行 : %s/^\(.*\)\n\1$/\1/g

使用\(和\)符號括起正則表達式,即可在後面使用\1、\2等變量來訪問\(和\)中的內容。

例如:交換列表中所有連字符分隔的條目的順序ABC : XYZ:%s/\(.*\):\(.*\)/\2 : \1/g

sed用法

用來直接處理文件

簡單實例
1、刪除所有空行:sed ‘s/^$/d’ *.txt

2、刪除所有隻包含空格或者製表符的行 : sed ’ s/^[ ]*$/d’ price.txt
3、刪除所有引號 : sed ‘s/"//g’ price.txt


參考網址:http://www.jb51.net/article/73342.htm

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