1. 程式人生 > >進階第七課 Python模塊之re

進階第七課 Python模塊之re

num ble 空白 res 編號 劃線 常用 eve 換行

所謂re,就是Regular Expressions。正則表達式。按照指定的規則匹配並返回字符串。

下面詳細介紹匹配規則(轉載)。

1、

.

匹配任意除換行符"\n"外的字符(在DOTALL模式中也能匹配換行符

a.c

abc

\

轉義字符,使後一個字符改變原來的意思

a\.c;a\\c

a.c;a\c

*

匹配前一個字符0或多次

abc*

ab;abccc

+

匹配前一個字符1次或無限次

abc+

abc;abccc

?

匹配一個字符0次或1次

abc?

ab;abc

^

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

^abc

abc

$

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

abc$

abc

|

或。匹配|左右表達式任意一個,從左到右匹配,如果|沒有包括在()中,則它的範圍是整個正則表達式

abc|def

abc

def

{}

{m}匹配前一個字符m次,{m,n}匹配前一個字符m至n次,若省略n,則匹配m至無限次

ab{1,2}c

abc

abbc

[]

字符集。對應的位置可以是字符集中任意字符。字符集中的字符可以逐個列出,也可以給出範圍,如[abc]或[a-c]。[^abc]表示取反,即非abc。
所有特殊字符在字符集中都失去其原有的特殊含義。用\反斜杠轉義恢復特殊字符的特殊含義。

a[bcd]e

abe

ace

ade

()

被括起來的表達式將作為分組,從表達式左邊開始沒遇到一個分組的左括號“(”,編號+1.
分組表達式作為一個整體,可以後接數量詞。表達式中的|僅在該組中有效。

(abc){2}
a(123|456)c

abcabc

a456c

2、

\d

數字:[0-9]

a\bc

a1c

\D

非數字:[^\d]

a\Dc

abc

\s

匹配任何空白字符:[<空格>\t\r\n\f\v]

a\sc

a c

\S

非空白字符:[^\s]

a\Sc

abc

\w

匹配包括下劃線在內的任何字字符:[A-Za-z0-9_]

a\wc

abc

\W

匹配非字母字符,即匹配特殊字符

a\Wc

a c

\A

僅匹配字符串開頭,同^

\Aabc

abc

\Z

僅匹配字符串結尾,同$

abc\Z

abc

\b

匹配\w和\W之間,即匹配單詞邊界匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, ‘er\b‘ 可以匹配"never" 中的 ‘er‘,但不能匹配 "verb" 中的 ‘er‘。

\babc\b
a\b!bc

空格abc空格
a!bc

\B

[^\b]

a\Bbc

abc

3、

(?P<name>)

分組,除了原有的編號外再指定一個額外的別名

(?P<id>abc){2}

abcabc

(?P=name)

引用別名為<name>的分組匹配到字符串

(?P<id>\d)abc(?P=id)

1abc1

5abc5

\<number>

引用編號為<number>的分組匹配到字符串

(\d)abc\1

1abc1

5abc5

4、常用函數

4.1 re.compile()

4.2 re.match()

4.3 re.search()

4.4 re.findall()

4.5 re.finditer()

4.6 re.split()

4.7 re.sub()

4.8 re.subn()

進階第七課 Python模塊之re