一、正規表示式30分鐘快速入門
1、元字元
. 匹配換行符以外的任意字元
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開頭或結束
^ 匹配字串的開始
$ 匹配字串的結束
例如:\b\w\b表示剛好6個字元的單詞
^\d$表示5-12位的數字
2、字元轉義
如果你想查詢字元本身的話,就需要用\來取消這些字元的特殊意義。
例如:deerchao\.net匹配deerchao.net
3、重複
* 重複零次或更多次
+ 重複一次或更多次
? 重複零次或一次
重複n次
重複n次到更多次
重複n次到m次
例如:windows\d+表示windows後面跟乙個或多個數字
^\w+匹配一行的第乙個單詞(或者整個字串的第乙個單詞)
4、字元類
如果想匹配沒有預定義的字元類集合,應採用:
例如:[aeiou] 匹配任意乙個英文的母音字母
[0-9]匹配數字,與\d一致
[a-z0-9a-z]與\w一致(如果只考慮英文的話)
\(?0\d[2][) -]?\d[8]此時可以匹配:(010)88886666、022-88886666、02988886666
5、分枝條件
例如:0\d-\d|0\d-\d匹配兩種以連字型大小分隔的**號碼:一種是三位區號,8位本地號(如010-12345678),一 種是4位區號,7位本地號(0376-2233445)
。6、分組
當我們想重複多個字元的時候,此時需要用到分組。
例如:(\d\.)\d 此時匹配到ip位址,但是此時它也能匹配到256.300.888.999這種不可能存在的位址。所以只能表 達為:((2[0-4]\d|25[0-5]|[0 1]?\d\d?)\.)(2[0-4]\d|25[0-5]|[0 1]?\d\d?)
7、反義
\w 匹配任意不是字母、數字、下劃線、漢字的字元
\s 匹配任意不是空白符的字元
\d 匹配任意非數字的字元
\b 匹配任意不是單詞開頭或者結束的位置
[^x] 匹配除x外的任意字元
[^aeiou] 匹配除aeiou以外的任意字元
8、後向引用
(exp) 匹配exp,並捕獲文字到自動命名的組裡
(?exp) 匹配exp,並捕獲文字到名稱為name的組裡,也可以寫成(?'name'exp)
(?:exp) 匹配exp,不捕獲文字,也不給此分組分配組號
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp後面的位置
(?!exp) 匹配後面不是exp的位置
(?(?#comment) 這種型別的分組不對正規表示式的處理產生任何影響,用於提供注釋讓人閱讀
9、貪婪與懶惰
*? 重複任意次,但是盡可能少重複
+? 重複一次或更多次,但是盡可能少重複
?? 重複0次或1次,但是盡可能少重複
?重複n到m次,但是盡可能地少重複
重複n次以上,但是盡可能少重複
例如:a.*?b匹配最短的以a開始,以b結束的字串。
10、分行匹配
例如:需要查詢多行**中所有的注釋行,此時用:
(?m)^\s*//.*$ 當不加(?m)時只能匹配第一行注釋,因為*是乙個「貪婪型」元字元,所以第一行注釋會一直延續到末尾。而加上之後,它會將換行符視為乙個字串的分隔符,這樣就能匹配每一行注釋。
正規表示式學習筆記
正規表示式學習日記 1 為萬用字元,表示任何乙個字元,例如 a.c 可以匹配 anc abc acc 2 在內可以指定要求匹配的字元,例如 a nbc c 可以匹配 anc abc acc 但不可以匹配 ancc a到z可以寫成 a z 0到9可以寫成 0 9 3 數量限定符號,表示匹配次數 或者叫...
正規表示式學習筆記
字元描述 將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...
正規表示式學習筆記
1.正規表示式是可用於在乙個檔案或字元裡查詢和替代文字的一種標準。它具有兩種標準 基本的正規表示式 bre 擴充套件的正規表示式 ere ere包括bre功能和另外其它的概念。2.表示或運算 3.匹配任何單個字元 4.匹配任何中包含的單個字元,如 張王李 三,匹配張 三 王三,李三 5.將排除 後跟...