正規表示式,又稱正規表示式、正規表示法、正規表示式、規則表示式、常規表示法(英語:regular expression,在**中常簡寫為regex、regexp或re),電腦科學的乙個概念。正規表示式使用單個字串來描述、匹配一系列匹配某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索、替換那些匹配某個模式的文字。以上定義**於維基百科在計算機(軟體)技術中,萬用字元可用於代替字元。
在linux中,正規表示式grep,awk,sed等命令都可以使用,非常方便。萬用字元是shell自帶的,在find,ls,cp等命令使用
讓我們先從簡單的開始。
ls *
會列出當前目錄下所有檔案,*
匹配了所有的檔名,而ls *a
匹配所有a開頭的檔案。
需要注意的是,如果當前目錄下有目錄名匹配成功,會列出該目錄下所有檔案
*
可以代替任意個數字元,?
只能代替乙個。
元字元作用
*前乙個字元匹配0次或任意多次
.匹配除了換行符以外任意乙個字元
^匹配行首。例如:^helloworld會匹配以helloworld開頭的行
$匹配行尾。例如:helloworld$會匹配以helloworld結尾的行
匹配中括號裡的任意指定的乙個字元,但只匹配乙個字元
[^]匹配除中括號以外的任意乙個字元
\轉義符,取消特殊含義
表示其前面的字元恰好出現n次
表示其前面的字元出現不小於n次
表示其前面的字元至少出現n次,最多出現m次
以上整理自慕課
舉幾個例子:
字元描述
\b匹配乙個單詞邊界,也就是指單詞和空格間的位置。例如,「er\b」可以匹配「never」中的「er」,但不能匹配「verb」中的「er」。
\b匹配非單詞邊界。「er\b」能匹配「verb」中的「er」,但不能匹配「never」中的「er」。
\cx匹配由x指明的控制字元。例如,\cm匹配乙個control-m或回車符。x的值必須為a-z或a-z之一。否則,將c視為乙個原義的「c」字元。
\d匹配乙個數字字元。等價於[0-9]。
\d匹配乙個非數字字元。等價於[^0-9]。
\f匹配乙個換頁符。等價於\x0c和\cl。
\n匹配乙個換行符。等價於\x0a和\cj。
\r匹配乙個回車符。等價於\x0d和\cm。
\s匹配任何空白字元,包括空格、製表符、換頁符等等。等價於[ \f\n\r\t\v]。
\s匹配任何非空白字元。等價於[^ \f\n\r\t\v]。
\t匹配乙個製表符。等價於\x09和\ci。
\v匹配乙個垂直製表符。等價於\x0b和\ck。
\w匹配包括下劃線的任何單詞字元。等價於「[a-za-z0-9_]」。
\w匹配任何非單詞字元。等價於「[^a-za-z0-9_]」。
\xn匹配n,其中n為十六進製制轉義值。十六進製制轉義值必須為確定的兩個數字長。例如,「\x41」匹配「a」。「\x041」則等價於「\x04&1」。正規表示式中可以使用ascii編碼。.
\num
向後引用(back-reference)乙個子字串(substring),該子字串與正規表示式的第num個用括號圍起來的子表示式(subexpression)匹配。其中num是從1開始的正整數,其上限可能是99。例如:「(.)\1」匹配兩個連續的相同字元。
\n標識乙個八進位制轉義值或乙個向後引用。如果\n之前至少n個獲取的子表示式,則n為向後引用。否則,如果n為八進位制數字(0-7),則n為乙個八進位制轉義值。
\nm標識乙個八進位制轉義值或乙個向後引用。如果\nm之前至少有nm個獲得子表示式,則nm為向後引用。如果\nm之前至少有n個獲取,則n為乙個後跟文字m的向後引用。如果前面的條件都不滿足,若n和m均為八進位制數字(0-7),則\nm將匹配八進位制轉義值nm。
\nml
如果n為八進位制數字(0-3),且m和l均為八進位制數字(0-7),則匹配八進位制轉義值nml。
\un
**於維基百科
正規表示式測試器
我也不太懂,一般也用不到
字元描述
(pattern)
匹配pattern並獲取這一匹配的子字串。該子字串用於向後引用。所獲取的匹配可以從產生的matches集合得到,在vbscript中使用submatches集合,在jscript中則使用0…
9屬性。要匹配圓括號字元,請使用「(」或「)」。
(?:pattern)
匹配pattern但不獲取匹配的子字串,也就是說這是乙個非獲取匹配,不儲存匹配的子字串用於向後引用。這在使用或字元「(
(?=pattern)
正向肯定預查,在任何匹配pattern的字串開始處匹配查詢字串。這是乙個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如,「windows(?=95
(?!pattern)
正向否定預查,在任何不匹配pattern的字串開始處匹配查詢字串。這是乙個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如「windows(?!95
(?<=pattern)
反向肯定預查,與正向肯定預查類似,只是方向相反。例如,「(?<=95
(?反向否定預查,與正向否定預查類似,只是方向相反。例如「(?
一般只要記住最常用的,其他的有個印象,需要時再查。
萬用字元與正規表示式
萬用字元與正規表示式很容易混淆,首先要明白二者是不同的,個人感覺萬用字元用於linux的shell命令 如檔名相關操作 中,而正規表示式用於文字內容中的字串搜尋和替換等。萬用字元是linux系統本身就支援的,而正規表示式用於vim編輯器或awk程式,這些文字處理工具正是由於支援正規表示式才變得強大。...
萬用字元與正規表示式
萬用字元與正規表示式很容易混淆,首先要明白二者是不同的,個人感覺萬用字元用於linux的shell命令 如檔名相關操作 中,而正規表示式用於文字內容中的字串搜尋和替換等。萬用字元是linux系統本身就支援的,而正規表示式用於vim編輯器或awk程式,這些文字處理工具正是由於支援正規表示式才變得強大。...
正規表示式與萬用字元
正規表示式與萬用字元的區別 正規表示式用來在檔案中匹配符合條件的字串,正則是包含匹配,grep awk sed等都支援正則匹配 萬用字元用來匹配符合條件的檔名,萬用字元是完全匹配,ls find cp等都支援萬用字元 萬用字元?匹配乙個任意字元 匹配0個或任意多個任意字元,也就是匹配任何內容 匹配中...