2.search(string[, pos[, endpos]]) | re.search(pattern, string[, flags]):
這個方法用於查詢字串中可以匹配成功的子串。從string的pos下標處起嘗試匹配pattern,如果pattern結束時仍可匹配,則返回乙個match物件;若無法匹配,則將pos加1後重新嘗試匹配;直到pos=endpos時仍無法匹配則返回none。
pos和endpos的預設值分別為0和len(string));re.search()無法指定這兩個引數,引數flags用於編譯pattern時指定匹配模式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# encoding: utf-8
import
re
# 將正規表示式編譯成pattern物件
pattern
=
re.
compile
(r
'world'
)
# 使用search()查詢匹配的子串,不存在能匹配的子串時將返回none
# 這個例子中使用match()無法成功匹配
match
=
pattern.search(
'hello world!'
)
if
match:
# 使用match獲得分組資訊
print
match.group()
### 輸出 ###
# world
3.split(string[, maxsplit]) | re.split(pattern, string[, maxsplit]):
按照能夠匹配的子串將string分割後返回列表。maxsplit用於指定最大分割次數,不指定將全部分割。
1
2
3
4
5
6
7
import
re
p
=
re.
compile
(r
'\d+'
)
print
p.split(
'one1two2three3four4'
)
### output ###
# ['one', 'two', 'three', 'four', '']
4.findall(string[, pos[, endpos]]) | re.findall(pattern, string[, flags]):
搜尋string,以列表形式返回全部能匹配的子串。
1
2
3
4
5
6
7
import
re
p
=
re.
compile
(r
'\d+'
)
print
p.findall(
'one1two2three3four4'
)
### output ###
# ['1', '2', '3', '4']
5.finditer(string[, pos[, endpos]]) | re.finditer(pattern, string[, flags]):
搜尋string,返回乙個順序訪問每乙個匹配結果(match物件)的迭代器 。
1
2
3
4
5
6
7
8
import
re
p
=
re.
compile
(r
'\d+'
)
for
m
in
p.finditer(
'one1two2three3four4'
):
print
m.group(),
### output ###
# 1 2 3 4
6.sub(repl, string[, count]) | re.sub(pattern, repl, string[, count]):
使用repl替換string中每乙個匹配的子串後返回替換後的字串。
當repl是乙個字串時,可以使用\id或\g、\g引用分組,但不能使用編號0。
當repl是乙個方法時,這個方法應當只接受乙個引數(match物件),並返回乙個字串用於替換(返回的字串中不能再引用分組)。
Python正規表示式指南下半部
2.search string pos endpos re.search pattern,string flags 這個方法用於查詢字串中可以匹配成功的子串。從string的pos下標處起嘗試匹配pattern,如果pattern結束時仍可匹配,則返回乙個match物件 若無法匹配,則將pos加1後...
Python正規表示式指南下下半部
count用於指定最多替換次數,不指定時全部替換。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 importre p re.compile r w w s i say,hello world printp.sub r 2 1 s deffunc m returnm.grou...
Python正規表示式指南下下半部
count用於指定最多替換次數,不指定時全部替換。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 importre p re.compile r w w s i say,hello world printp.sub r 2 1 s deffunc m returnm.grou...