複製鏈接
請複製以下鏈接發送給好友

元字符

鎖定
正則表達式語言由兩種基本字符類型組成:原義(正常)文本字符和元字符。元字符使正則表達式具有處理能力。所謂元字符就是指那些在正則表達式中具有特殊意義的專用字符,可以用來規定其前導字符(即位於元字符前面的字符)在目標對象中的出現模式。
中文名
元字符
外文名
metacharacter
解    釋
一組代替一個或多個字符的字符
字符應用
較為常用的元字符包括
使用方式
\s:用於匹配單個空格符

元字符解釋

元字符是一個或一組代替一個或多個字符的字符。聽起來有點拗口,但舉一個例子也許你就明白了:元字符*用來匹配0個或多個的前一字符;而元字符.用來匹配一個任意的一個字符(除換行符外)。

元字符字符應用

較為常用的元字符包括: “+”, “*”,以及 “?”。其中,“+”元字符規定其前導字符必須在目標對象中連續出現一次或多次,“*”元字符規定其前導字符必須在目標對象中出現零次或連續多次,而“?”元字符規定其前導對象必須在目標對象中連續出現零次或一次。
下面,就讓我們來看一下正則表達式元字符的具體應用。
/fo+/
因為上述正則表達式中包含“+”元字符,表示可以與目標對象中的 “fo”, “foo”, 或者 “fooo” 等在字母f後面連續出現一個或多個字母o的字符串相匹配。
/eg*/
因為上述正則表達式中包含“*”元字符,表示可以與目標對象中的 “e”, “eg” 或者 “egg” 等在字母e後面連續出現零個或多個字母g的字符串相匹配。
/Wi?/
因為上述正則表達式中包含“?”元字符,表示可以與目標對象中的 “W”, 或者 “Wi”,等在字母W後面連續出現零個或一個字母 i 的字符串相匹配。
除了元字符之外,用户還可以精確指定模式在匹配對象中出現的頻率。例如,
/jim{2,6}y/
上述正則表達式規定字符m可以在匹配對象中連續出現2-6次,因此,上述正則表達式可以同jimmy或jimmmmmy等字符串相匹配。

元字符使用方式

在對如何使用正則表達式有了初步瞭解之後,我們來看一下其它幾個重要的元字符的使用方式。 [1] 
\s:用於匹配單個空格符,包括tab鍵換行符
\S:用於匹配除單個空格符之外的所有字符;
\d:用於匹配從0到9的數字;
\w:用於匹配字母,數字或下劃線字符;
\W:用於匹配所有與\w不匹配的字符;
. :用於匹配除換行符之外的所有字符。
(説明:我們可以把\s和\S以及\w和\W看作互為逆運算)
下面來看看更多的例子:
\ba\w*\b匹配以字母a開頭的單詞——先是某個單詞開始處(\b),然後是字母a,然後是任意數量的字母或數字(\w*),最後是單詞結束處(\b)。
好吧,我們説説正則表達式裏的單詞是什麼意思吧:就是不少於一個的連續的\w。不錯,這與學習英文時要背的成千上萬個同名的東西的確關係不大
\d+匹配1個或更多連續的數字。這裏的+是和*類似的元字符,不同的是*匹配重複任意次(可能是0次),而+則匹配重複1次或更多次。
\b\w{6}\b 匹配剛好6個字符的單詞。
元字符^(和數字6在同一個鍵位上的符號)和$都匹配一個位置,這和\b有點類似。^匹配你要用來查找的字符串的開頭,$匹配結尾。這兩個代碼在驗證輸入的內容時非常有用,比如一個網站如果要求你填寫的QQ號必須為5位到12位數字時,可以使用:^\d{5,12}$。
這裏的{5,12}和前面介紹過的{2}是類似的,只不過{2}匹配只能不多不少重複2次,{5,12}則是重複的次數不能少於5次,不能多於12次,否則都不匹配。
因為使用了^和$,所以輸入的整個字符串都要用來和\d{5,12}來匹配,也就是説整個輸入必須是5到12個數字,因此如果輸入的QQ號能匹配這個正則表達式的話,那就符合要求了。
和忽略大小寫的選項類似,有些正則表達式處理工具還有一個處理多行的選項。如果選中了這個選項,^和$的意義就變成了匹配行的開始處和結束處。

元字符egrep元字符總結

匹配單個字符的元字符
. 點號 匹配單個任意字符
[…] 字符組 匹配單個列出的字符
[^…] 排除型字符組 匹配單個未列出的字符
\char 轉義字符 若char是元字符,或轉義序列無特殊含義時,匹配char對應的普通字符
提供計數功能的元字符
? 問號 容許匹配一次,但非必須
* 星號 可以匹配任意多次,也可能不匹配
+ 加號 至少需要匹配一次,至多可能任意多次
{min,max} 區間量詞 至少需要min次,至多容許max次
匹配位置的元字符
^ 脱字符 匹配一行的開頭位置
$ 美元符 匹配一行的結束位置
\< 單詞分界符 匹配單詞的開始位置
\>單詞分界符 匹配單詞的結束位置
其他元字符
| alternation 匹配任意分隔的表達式
(…) 括號 限定多選結構的範圍,標註量詞作用的元素,為反向引用”捕獲”文本
\1,\2,… 反向引用 匹配之前的第一、第二組括號內的字表達式匹配的文本
使用括號的3個理由:限制多選結構、分組、捕獲文本
-i的參數很有用,它能忽略大小寫的匹配
轉義有3種情況:
1. \ 加上元字符,表示匹配元字符所使用的普通字符。
2. \ 加上非元字符,組成一種由具體實現方式規定其意義的元字符序列 如\<表示單詞的起始邊界。
3. \ 加上任意其他字符,默認情況就是匹配此字符,也就是説,反斜線被忽略了。
參考資料