正則匹配的各種模式 1.擇一匹配(|) 擇一匹配用管道符號(|),也就是豎線表示。代表可以從多個模式中選擇一個,可用於分割正則表達式。例如: ABC | abc 表示即可以匹配 ABC,又可以匹配 abc。 2.匹配任意單個字元 3.從字元串起始或者結尾或者單詞邊界匹配 例如: \bthe,匹配以 ...
正則匹配的各種模式
1.擇一匹配(|)
擇一匹配用管道符號(|),也就是豎線表示。代表可以從多個模式中選擇一個,可用於分割正則表達式。例如: ABC | abc 表示即可以匹配 ABC,又可以匹配 abc。
2.匹配任意單個字元
- 點號(.)可以匹配除換行符 \n 以外的任意字元,無論是空格,字母,數字,可列印字元、不可列印字元,還是一個符號,使用點號都能夠匹配它們。
- 在Python中,如果使用模塊屬性re.S 也就是 re.DOTALL,那麼換行符 \n 也可以匹配了。
3.從字元串起始或者結尾或者單詞邊界匹配
- 要匹配字元串的開始位置,可以使用脫字元(^)或者特殊字元 \A 。例如:^start,匹配從start開始。
- 要匹配字元串的結束位置,可以使用美元符號($)或者 \Z 。例如:end$,匹配以end結束。
- 特殊字元\b 和\B 可以用來匹配字元邊界。區別在於\b 用於匹配一個單詞的邊界,即如果一個模式必須位於單詞的起始部分,就不管該單詞前面是否有任何字元。同樣,\B 將匹配出現在一個單詞中間的模式。
例如:
- \bthe,匹配以 the開頭的字元串。
- \bthe\b,僅僅匹配單詞 the。
- \Bthe, 任何包含但並不以 the 作為起始的字元串
4.字元集
使用方括弧表示字元集,可以匹配字元集中的任意符號。例如:b[aeiu]t,可以匹配 bat、bet、bit、but。
5.限定範圍和否定
- 使用 - 連接字元,表示匹配兩個字元之間的任意字元。例如: 1-9,A-Z,分別用於表示數值數字、大寫字母。
- 在方括弧中的字元前加 ^,表示否定,不匹配 ^ 之後的字元,例如:[^aeiou],表示一個非母音字元。
6.特殊符號*、+和?
- 星號操作符(*)將匹配其左邊的正則表達式 出現零次或者多次的情況。
- 加 號(+)操作符將匹配一次或者多次出現的正則表達式。
- 問號(?) 操作符將匹配零次或者一次出現的正則表達式。也叫做非貪婪匹配。
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 匹配。