python正則表示式學習筆記
正則表示式
學習資源:https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh.md
正則表達例子:
| A|B 匹配 A或者B
. A.A 匹配 A.A 匹配任何字元 除了\n除外
^ ^Demo 匹配字串起始部分
$ abc$ 匹配字串終止部分
* [A-Za-z0-9]* 匹配零次多次前面出現的表示式
+ [a-z]+\.com 匹配1次或多次前面出現的表示式
? abc? 匹配0次或者1次前面出現的表示式
{N} [0-9]{3} 匹配N次前面出現的表示式 {指定引數} {,逗號分割引數}
[...] [abc] 匹配來自字符集的任意單一字元
[..x-y..] [a-z]匹配下x-y範圍中的任意單一字元
[^...] [^abc],[^a-z]不匹配此字符集中出現的任何一個字元,包括某一範圍的字元
(*|+|?{})? .*?[a-z] 用於匹配上面頻繁出現/重複出現符號的非貪婪版本
(...) ([0-9]{3})?,f(00|u)bar 匹配封閉的正則表示式,然後另存為子組
特殊字元用法
\d data\d+.txt 匹配任何十進位制[0-9] \D與\d相反,不匹配任何非數值型的數字
\w [A-Za-z]\w+ 匹配任何字母數字字元 \W相反
\s of\sthe 匹配任何空格字元, \S相反
\b \bThe\b匹配任何單詞邊界 , \B相反
\N 匹配已儲存的子組N
\c \.,\\,\* 逐字匹配任何特殊字元
\A(\Z) 匹配字串的起始
擴充套件表示法
(?iLmsux) (?x), (? im) 在正則表示式中嵌入一個或多個特殊標記引數
(?:...) (?:\w+\.)* 表示一個匹配不用儲存的分組
(?P<name>...) 像一個僅有name識別符號而不是數字ID標識的正則分組匹配
(?P=name) 在同一個字元中匹配由(?P<name>)分組的之前文字
(?#...) 表示註釋
(?=...) 匹配條件是如果...出現在之後的位置,而不使用輸入字元;稱作向前視斷言
(?!..) 匹配條件是如果...不出現在之後的位置
(?<=...) 匹配條件是如果,出現在之前的位置
(?<!...) 匹配條件是如果...不出現在之前的位置
(?(id/name)Y/N) 如果分組所提供的id或者name存在,就返回正則表示式的條件匹配Y,如果不存在,就返回N ,N可選項