Python re正則表達式速查
常見正則表達式符號和特殊字符
表示法 |
描述 |
正則表達式示例 |
符號 |
||
re1|re2 |
匹配正則表達式re1或re2 |
foo|bar |
. |
匹配任意除換行符"\n"外的字符 |
a.c |
^ |
匹配字符串開頭,在多行模式中匹配每一行的開頭 |
^Dear |
$ |
匹配字符串末尾,在多行模式中匹配每一行的末尾 |
/bin/*sh$ |
* |
匹配前一個字符0或多次 |
[A-Za-z0-9]* |
+ |
匹配前一個字符1次或多次 |
[a-z]+\.com |
? |
匹配一個字符0次或1次 |
goo? |
{} |
{m}匹配前一個字符 |
[0-9]{3} ,[0-9]{5,9} |
[...] |
匹配字符集中的任意單個字符 |
[aeiou] |
[^...] |
不匹配字符集中的任意一個字符 |
[^aeiou],[^A-Za-z0-9] |
[x-y] |
X~y範圍中的任何一個字符 |
[b-x] |
() |
匹配封閉的正則,存為子組,從表達式左邊開始每遇到一個分組的左括號“(”,編號+1 |
([0-9]{3})?,f(oo|u)bar |
特殊字符 |
||
\d |
匹配任何十進制數(\D 相反)<=> [0-9] |
data\d+.txt |
\w |
任何字母數字(\W 相反) <=> [A-Za-z0-9] |
[A-Za-z]\w+ |
\s |
任何空格字符(\S 相反) <=> [\n\t\r\v\f] |
of\sthe |
\b |
匹配任何單詞邊界(\B相反) |
\bThe\b |
\A(\Z) |
匹配字符串起始(結束) <=> ^($) |
\ADear |
擴展表示法 |
||
(?iLmsux) |
編譯選項指定,可以寫在findall或compile的參數中,也可以寫在正則式裏 |
(?x), (?im) |
(?#...) |
表示註釋,所有內容被忽略 |
(?#comment) |
(?:...) |
表示一個匹配不用保存的分組 |
(?:\w+\.) |
(?=...) |
如果 ... 出現在要匹配字符串的後面 例如:Isaac (?=Asimov) 只匹配 ‘Isaac ‘ 後面跟 ‘Asimov‘的字符串 |
(?=.com) |
(?!...) |
如果 ... 不出現在要匹配字符串後面 |
(?!.net) |
(?<=...) |
如果 ... 出現在之前的位置,則匹配 |
(?<=800-) |
(?<!...) |
如果 ... 不出現在之前的位置,則匹配 |
(?<!192\.168\.) |
(?(id/name)yes-pattern|no-pattern) |
如果 group 中的 id/name 存在匹配 yes-pattern,否則 no-pattern 例如:(<)?(\w+@\w+(?:\.\w+)+)(?(1)>)只會匹配 <[email protected]> 或者 [email protected] 不會匹配 <[email protected] |
(?(1)y|x) |
(?P<name>...) |
分組,除了原有的編號外再指定一個額外的別名 |
(?P<id>abc){2} |
(?P=name) |
引用別名為<name>的分組匹配到字符串 |
(?P<id>\d)abc(?P=id) |
Python re正則表達式速查