1. 程式人生 > >學習正則表達式筆記(二)

學習正則表達式筆記(二)

括號 之間 都沒有 分組 ont dot 操作 span googl

正則匹配的各種模式

1.擇一匹配(|)

  擇一匹配用管道符號(|),也就是豎線表示。代表可以從多個模式中選擇一個,可用於分割正則表達式。例如: ABC | abc 表示即可以匹配 ABC,又可以匹配 abc。

2.匹配任意單個字符

  1. 點號(.)可以匹配除換行符 \n 以外的任意字符,無論是空格,字母,數字,可打印字符、不可打印字符,還是一個符號,使用點號都能夠匹配它們。
  2. 在Python中,如果使用模塊屬性re.S 也就是 re.DOTALL,那麽換行符 \n 也可以匹配了。

3.從字符串起始或者結尾或者單詞邊界匹配

  1. 要匹配字符串的開始位置,可以使用脫字符(^)或者特殊字符 \A 。例如:^start,匹配從start開始。
  2. 要匹配字符串的結束位置,可以使用美元符號($)或者 \Z 。例如:end$,匹配以end結束。
  3. 特殊字符\b 和\B 可以用來匹配字符邊界。區別在於\b 用於匹配一個單詞的邊界,即如果一個模式必須位於單詞的起始部分,就不管該單詞前面是否有任何字符。同樣,\B 將匹配出現在一個單詞中間的模式。

  例如:

  •   \bthe,匹配以 the開頭的字符串。
  •   \bthe\b,僅僅匹配單詞 the。
  •   \Bthe, 任何包含但並不以 the 作為起始的字符串

4.字符集

  使用方括號表示字符集,可以匹配字符集中的任意符號。例如:b[aeiu]t,可以匹配 bat、bet、bit、but。

5.限定範圍和否定

  1. 使用 - 連接字符,表示匹配兩個字符之間的任意字符。例如: 1-9,A-Z,分別用於表示數值數字、大寫字母。
  2. 在方括號中的字符前加 ^,表示否定,不匹配 ^ 之後的字符,例如:[^aeiou],表示一個非元音字符。

6.特殊符號*、+和?

  1. 星號操作符(*)將匹配其左邊的正則表達式 出現零次或者多次的情況。
  2. 加 號(+)操作符將匹配一次或者多次出現的正則表達式。
  3. 問號(?) 操作符將匹配零次或者一次出現的正則表達式。也叫做非貪婪匹配。

7. 使用圓括號指定分組

  一對圓括號可以實現以下任意一個(或者兩個)功能:1.對正則表達式進行分組;2.匹配子組。

8.擴展表示法

  擴展表示法時以問號開始(?…)

的。通常用於在判斷匹配之前提供標記,實現一個前視(或者後視)匹配,或者條件檢查。盡管圓括號使用這些符號,但是只有(?P<name>)表述一個 分組匹配。所有其他的都沒有創建一個分組。

正則表達式模式 匹配的字符串

(?:\w+\.)* 以句點作為結尾的字符串,例如“google.”、“ twitter.”、“ facebook.”,但是這些匹配不會保存下來 供後續的使用和數據檢索。

(?#comment) 此處並不做匹配,只是作為註釋。

(?=.com) 如果一個字符串後面跟著“.com”才做匹配操作,並不使用任何目標字符串。

(?!.net) 如果一個字符串後面不是跟著“.net”才做匹配操作。

(?<=800-) 如果字符串之前為“800-”才做匹配,假定為電話號碼,同樣,並不使用任何輸入字符串。

(?<!192\.168\.) 如果一個字符串之前不是“192.168.”才做匹配操作,假定用於過濾掉一組 C 類 IP 地址。

(?(1)y|x) 如果一個匹配組 1(\1)存在,就與 y匹配;否則,就與 x 匹配。

學習正則表達式筆記(二)