標籤:des style http 使用 strong io art 代碼
1、“ \ ” 用法
用於關閉其後續字元的特殊含義,恢複字元的本身含義,如:\\ 表示字元 \
2、 “ . " 用法
匹配任意單個字元
3、 " * " 用法
匹配任一字元,可以是單個,也可以是多個,和 ”.“ 字元的去吧是是否可以匹配多個任一字元
4、 "^" 的用法
在行的起始處開始匹配緊接著的字元,如 ^6,匹配行的首字元為6的行。
5、" $ " 的用法
和 “^” 用法相似,表示在行的結尾處開始匹配字元,如 6$,匹配行的結尾字元為6的行。
6 、" [ ] " 的用法
匹配某個範圍內的字元方括號運算式,匹配其內部任何字元。其中-表示連續字元的範圍,^符號置於方括弧裡第一個字元則有反向的含義,即匹配不在列表內(方括弧)的任何字元。如果想讓]和-表示其原意,需要將其放置在方括弧的首字元位置,如[]ab]或[-ab],如這兩個字元同時存在,則將]放置在首字元位置,-放置在最尾部,如[]ab-]。
如[a-bA-Z0-9!]表示所有的大小寫字母,數字和驚嘆號。[^abc]表示a、b、c之外的所有字元。[Tt]om,可以匹配Tom和tom。 []-] 匹配字元中儲存 ] 或- 的所有字元。
7、 " \{n,m\} " 用法
區間運算式,用於匹配它前面的單個字元重複出現的次數的區間,如\{n\}表示重複n次,\{n,\}表示至少重複n次;\{n,m\}表示重複n到m次。
如:grep ‘ab\{2,4\}‘ * 可以過濾出 abb、abbb和abbbb ;grep ‘ab\{2\}‘ * 可以過濾出 abb、abbb和abbbb
8、 " \(...\) " 用法
圓括弧之間的模式儲存在特殊“保留空間”。最多可以將9個獨立的子模式儲存在單個模式中。匹配於子模式的文本,可以通過逸出序列\1到\9,被重複使用在相同模式裡。
如 : \(ab\).*\1表示ab組合出現兩次,兩次之間可存在任何數目的任何字元,如abcdab、abab等,其中 \1 表示匹配 ab
9、 “\b” 的用法
代表著單詞的開頭或結尾,也就是單詞的分界處,如 grep ‘he‘ * 可能會癡線 leh hehe ,但是grep ‘\bhe\b‘ * 只會出現單字元 “he”
轉:
假如你要找的是hi後面不遠處跟著一個Lucy,你應該用\bhi\b.*\bLucy\b。
這裡,.是另一個元字元,匹配除了分行符號以外的任一字元。*同樣是元字元,不過它代表的不是字元,也不是位置,而是數量——它指定*前邊的內容可以連續重複使用任意次以使整個運算式得到匹配。因此,.*連在一起就意味著任意數量的不包含換行的字元。現在\bhi\b.*\bLucy\b的意思就很明顯了:先是一個單詞hi,然後是任意個任一字元(但不能是換行),最後是Lucy這個單詞。
10、" \d " 的用法
用來匹配任意一位元字
0\d\d-\d\d\d\d\d\d\d\d匹配這樣的字串:以0開頭,然後是兩個數字,然後是一個連字號“-”,最後是8個數字(也就是中國的電話號碼。當然,這個例子只能匹配區號為3位的情形)。
這裡的\d是個新的元字元,匹配一位元字(0,或1,或2,或……)。-不是元字元,只匹配它本身——連字號(或者減號,或者中橫線,或者隨你怎麼稱呼它)。
為了避免那麼多煩人的重複,我們也可以這樣寫這個運算式:0\d{2}-\d{8}。這裡\d後面的{2}({8})的意思是前面\d必須連續重複匹配2次(8次)。
11、 “\s” 的用法
匹配任意的空白符,包括空格,定位字元(Tab),分行符號,中文全形空格
12、 “\w” 的用法
匹配字母或數字或底線或漢字
以下轉自(Regex30分鐘入門教程:http://deerchao.net/tutorials/regex/regex.htm)
\ba\w*\b匹配以字母a開頭的單詞——先是某個單詞開始處(\b),然後是字母a,然後是任意數量的字母或數字(\w*),最後是單詞結束處(\b)。
好吧,現在我們說說Regex裡的單詞是什麼意思吧:就是不少於一個的連續的\w。不錯,這與學習英文時要背的成千上萬個同名的東西的確關係不大 :)
\d+匹配1個或更多連續的數字。這裡的+是和*類似的元字元,不同的是*匹配重複任意次(可能是0次),而+則匹配重複1次或更多次。
\b\w{6}\b 匹配剛好6個字元的單詞。
^\d{5,12}$ 這裡的{5,12}和前面介紹過的{2}是類似的,只不過{2}匹配只能不多不少重複2次,{5,12}則是重複的次數不能少於5次,不能多於12次,否則都不匹配。
因為使用了^和$,所以輸入的整個字串都要用來和\d{5,12}來匹配,也就是說整個輸入必須是5到12個數字,因此如果輸入的QQ號能匹配這個Regex的話,那就符合要求了。
和忽略大小寫選項類似,有些Regex處理工具還有一個處理多行的選項。如果選中了這個選項,^和$的意義就變成了匹配行的開始處和結束處。
13、反義代碼
代碼/文法 |
說明 |
\W |
匹配任意不是字母,數字,底線,漢字的字元 |
\S |
匹配任意不是空白符的字元 |
\D |
匹配任意非數位字元 |
\B |
匹配不是單詞開頭或結束的位置 |
[^x] |
匹配除了x以外的任一字元 |
[^aeiou] |
匹配除了aeiou這幾個字母以外的任一字元 |
當Regex中包含能接受重複的限定符時,通常的行為是(在使整個運算式能得到匹配的前提下)匹配儘可能多的字元。以這個運算式為例:a.*b,它將會匹配最長的以a開始,以b結束的字串。如果用它來搜尋aabab的話,它會匹配整個字串aabab。這被稱為貪婪匹配。
有時,我們更需要懶惰匹配,也就是匹配儘可能少的字元。前面給出的限定符都可以被轉化為懶惰匹配模式,只要在它後面加上一個問號?。這樣.*?就意味著匹配任意數量的重複,但是在能使整個匹配成功的前提下使用最少的重複。現在看看懶惰版的例子吧:
a.*?b匹配最短的,以a開始,以b結束的字串。如果把它應用於aabab的話,它會匹配aab(第一到第三個字元)和ab(第四到第五個字元)。
表5.懶惰限定符
代碼/文法 |
說明 |
*? |
重複任意次,但儘可能少重複 |
+? |
重複1次或更多次,但儘可能少重複 |
?? |
重複0次或1次,但儘可能少重複 |
{n,m}? |
重複n到m次,但儘可能少重複 |
{n,}? |
重複n次以上,但儘可能少重複
|