天天看點

正規表達式 筆記 regExpression Regular expression

正規表達式教程

.       比對除換行符以外的任意字元
    \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