1. 程式人生 > >Python re正則表達式速查

Python re正則表達式速查

python re 模式 user es2017 src ble 十進制數 mage 編譯

技術分享

常見正則表達式符號和特殊字符

表示法

描述

正則表達式示例

符號

re1|re2

匹配正則表達式re1re2

foo|bar

.

匹配任意除換行符"\n"外的字符

a.c

^

匹配字符串開頭,在多行模式中匹配每一行的開頭

^Dear

$

匹配字符串末尾,在多行模式中匹配每一行的末尾

/bin/*sh$

*

匹配前一個字符0或多次

[A-Za-z0-9]*

+

匹配前一個字符1次或多次

[a-z]+\.com

?

匹配一個字符0次或1

goo?

{}

{m}匹配前一個字符

m次,{m,n}匹配前一個字符mn

[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)

編譯選項指定,可以寫在findallcompile的參數中,也可以寫在正則式裏

(?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正則表達式速查