正規表達式教程
. 比對除換行符以外的任意字元
\w 比對字母,數字,下劃線,漢字
\s 比對任意空白符
\d 比對數字
\b 比對單詞的開始或結束
^ 比對字元串的開始
$ 比對字元串的結束
\ 轉義字元
在查找 . \ ( ) ^ * 等在正規表達式中代表特殊含義的字元時。
如:www.baidu.com www.baidu.com
常用轉義字元
\a 報警字元(列印它的效果是電腦嘀一聲)
\b 通常是單詞分界位置,但如果在字元類裡使用代表倒退
\t 制表符,Tab
\r 回車
\v 豎向制表符
\f 換頁符
\n 換行符
重複
* 重複0或更多次
+ 重複1次或更多次
? 重複1次或0次
{n} 重複n次
{n,} 重複n次或更多次
{n,m} 重複n到m次
選擇性字元
[aeiou] aeiou中任意字元
[0-9] 比對任意一個數字,等同于\d
[a-z0-9A-Z] 等同于\w(如果隻考慮英文的話)
反義
\W 比對任意不是字母,數字,下劃線,漢字的字元
\S 比對任意不是空白符的字元
\D 比對任意非數字的字元
\B 比對不是單詞開關或結束位置
[^x] 比對除了x以外的任意字元
[^aeiou] 比對除了aeiou這幾個字母以外的任意字元
例:
<a[^>]+> 比對用尖括号括起來的以a開關的字元串
替換
使用替換時,順序是很重要的。
在比對替換時,将會從左到或地測試每個分枝條件,如果滿足了某個分枝的話,就不會支管其它的替換條件了。
例:
Windows98|Windows2000|WindowsXP
分組 用()括起來的分組
例:比對IP位址:
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
(exp) 比對exp,并捕獲文本到自動命名的組裡
(?#comment) 用來注釋
使用小括号的分組,都有一個組号,從左到右從1開始
後向引用 用于重複搜尋前面某個分組比對的文本
例:
\b(\w+)\b\s+\1\b 比對重複的單詞,如go go, ok ok
位置指定
(?=exp) 比對exp前面的位置【0寬先行斷言】
(?<=exp) 比對exp後面的位置【0寬後行斷言】
(?!exp) 比對後面跟的不是exp的位置
(?<!exp) 比對前面不是exp的位置
(?<![a-z])\d{7}比對前面不是小寫字母的七位數字
貪婪與懶惰
正規表達式在比對字元時,通常是比對盡可能多的字元。
*? 重複任意次,但盡可能少重複
+? 重複1次或更多次,但盡可能少重複
?? 重複0次或1次,但盡可能少重複
{n,m}? 重複n到m次,但盡可能少重複
{n,}? 重複n次以上,但盡可能少重複
a.*?b 比對 aab
a.*b 比對 aabab