1. 程式人生 > >正則表達式常用語法

正則表達式常用語法

同時 感覺 art 會有 {} 意思 使用 邊界 異或

正則表達式的作用:  

  對於現在的程序,幾乎每一個都會用到字符串,雖然許多編程語言都會對String有著很好的支持,但是在遇到一些繁瑣的驗證,其自帶的方法檢測會很吃力,所以出現了正則表達式來對字符串進行處理,常用的會有對特殊字符串的匹配將其替換,或者驗證某種格式的字符串。

常用符號的意義(Java):

  技術分享圖片

  技術分享圖片

  
  邊界處理(空格處理)

      技術分享圖片

  註:此方法在java開發文檔中提取,但是在其他的語言中也同樣適用。

括號在表達式中的意義:

  ():

    圓括號一般會在表達式中會將分為組,一對括號為一組,而且在使用的時候可以方便的取出某一組來進行操作。

  []:

    方括號[]會匹配其中的某一個字符,相當方括號裏面的各個字符為待選擇項目,所匹配的字符必須是其中的一項,同時裏面也可以是表達式。

其次有些符號在[]可能發生變化,如:^在[]表示取反,而^ 沒在[]中的時候就表示字符串的開頭。

  {}

    花括號表示限制長度。如:.{1}表示匹配一個任意字符,{1,3}表示至少一個最多3個。

特殊符號:

  

  錨號“^”和“$”

    錨號是用來把正則“錨”在字符串的特定位置的。最普通的錨號是“^”和“$”,當“^”用作錨號的時候,表示一行的開始;當“^”用作錨號的時候,表示一行的結束,這樣很容易的就可驗證字符串的開頭或者結束。

    ps:還有匹配目標文本的開始和結束采用 \A 和 \Z 或者 \z ;在大多數的語言中,\A 和 ^ 是等價的,\Z 和 \z 的區別在於是否會匹配換行符號 \ Z 可以將換行符號算在裏面,而 \z 則不可以。

  詞界“\b”“\B”

    \b 會匹配一個單詞的開始或者結束。

    \B 會匹配文本中 \b 不會匹配的每一個位置。

  連字符“-”

    用來劃定範圍,表示某一範圍內的任何字符。比如/[1234567890]/會感覺很不方便。如果表示為/[0-9]/就會顯得精簡的多。

  問號“?”

    表示一種異或關系;比如我們在語料庫中搜索詩人“李白”或者“李太白”,此時方括號就無法幫助我們,因為[]只能表示xx或者XX,但是不能表示有xx或者沒xx。此時可以用“?”來表示前一個字符有或者無。

  “|”和&&

    “|”表示或者的意思;而&&表示且。

貪婪模式與非貪婪模式

  .*:出現在表達式中時為貪婪模式,會將所有的匹配都找到;比如:在HTML中有許多標簽<div>part1</div><div>part2</div><div>part3</div><div>part4</div> 使用<div>.*</div>匹配到的是:<div>part1</div><div>part2</div><div>part3</div><div>part4</div>

  .*?: 則為非貪婪模式:他只要找到匹配後就不會找下一個了;使用<div>.*?</div>匹配到的是:<div>part1</div>。

(?<=exp) (?=exp)零寬斷言

  (?<=exp) 表示匹配exp之後的,(?=exp)表示匹配exp之前的。

正則表達式常用語法