日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
通過(guò)pythonre模塊進(jìn)行檢索和替換

re模塊是python獨(dú)有的匹配字符串的模塊,該模塊中提供的很多功能是基于正則表達(dá)式實(shí)現(xiàn)的,而正則表達(dá)式是對(duì)字符串進(jìn)行模糊匹配,提取自己需要的字符串部分,他對(duì)所有的語(yǔ)言都通用

創(chuàng)新互聯(lián)公司專(zhuān)業(yè)為企業(yè)提供蔡家坡網(wǎng)站建設(shè)、蔡家坡做網(wǎng)站、蔡家坡網(wǎng)站設(shè)計(jì)、蔡家坡網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、蔡家坡企業(yè)網(wǎng)站模板建站服務(wù),10余年蔡家坡做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

語(yǔ)法:

re.sub(pattern, repl, string, count=0, flags=0)

參數(shù):

pattern : 正則中的模式字符串
repl : 替換的字符串,也可為一個(gè)函數(shù)
string : 要被查找替換的原始字符串
count : 模式匹配后替換的最大次數(shù),默認(rèn) 0 表示替換所有的匹配
flags : 編譯時(shí)用的匹配模式,數(shù)字形式

前三個(gè)為必選參數(shù),后兩個(gè)為可選參數(shù)。

實(shí)例

#!/usr/bin/python3
import re

phone = "2004-959-559 # 這是一個(gè)電話(huà)號(hào)碼"

# 刪除注釋
num = re.sub(r'#.*$', "", phone)
print ("電話(huà)號(hào)碼 : ", num)

# 移除非數(shù)字的內(nèi)容
num = re.sub(r'\D', "", phone)
print ("電話(huà)號(hào)碼 : ", num)

以上實(shí)例執(zhí)行結(jié)果如下:

電話(huà)號(hào)碼 : 2004-959-559
電話(huà)號(hào)碼 : 2004959559

repl 參數(shù)是一個(gè)函數(shù)

以下實(shí)例中將字符串中的匹配的數(shù)字乘于 2:

實(shí)例

#!/usr/bin/python

import re

# 將匹配的數(shù)字乘于 2
def double(matched):
value = int(matched.group('value'))
return str(value * 2)

s = 'A23G4HFD567'
print(re.sub('(?P\d+)', double, s))

執(zhí)行輸出結(jié)果為:

A46G8HFD1134
compile 函數(shù)
compile 函數(shù)用于編譯正則表達(dá)式,生成一個(gè)正則表達(dá)式( Pattern )對(duì)象,供 match() 和 search() 這兩個(gè)函數(shù)使用。

語(yǔ)法格式為:

re.compile(pattern[, flags])

參數(shù):

pattern : 一個(gè)字符串形式的正則表達(dá)式

flags 可選,表示匹配模式,比如忽略大小寫(xiě),多行模式等,具體參數(shù)為: re.I 忽略大小寫(xiě) re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依賴(lài)于當(dāng)前環(huán)境

re.M 多行模式

re.S 即為’ . ‘并且包括換行符在內(nèi)的任意字符(’ . ‘不包括換行符)

re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依賴(lài)于 Unicode 字符屬性數(shù)據(jù)庫(kù)

re.X 為了增加可讀性,忽略空格和’ # ‘后面的注釋

實(shí)例

實(shí)例
>>>import re
>>> pattern = re.compile(r'\d+') # 用于匹配至少一個(gè)數(shù)字
>>> m = pattern.match('one12twothree34four') # 查找頭部,沒(méi)有匹配
>>> print m
None
>>> m = pattern.match('one12twothree34four', 2, 10) # 從'e'的位置開(kāi)始匹配,沒(méi)有匹配
>>> print m
None
>>> m = pattern.match('one12twothree34four', 3, 10) # 從'1'的位置開(kāi)始匹配,正好匹配
>>> print m # 返回一個(gè) Match 對(duì)象
<_sre.sre_match>
>>> m.group(0) # 可省略 0
'12'
>>> m.start(0) # 可省略 0
3
>>> m.end(0) # 可省略 0
5
>>> m.span(0) # 可省略 0
(3, 5)

  

在上面,當(dāng)匹配成功時(shí)返回一個(gè) Match 對(duì)象,其中:

group([group1, …]) 方法用于獲得一個(gè)或多個(gè)分組匹配的字符串,當(dāng)要獲得整個(gè)匹配的子串時(shí),可直接使用 group() 或 group(0); start([group]) 方法用于獲取分組匹配的子串在整個(gè)字符串中的起始位置(子串第一個(gè)字符的索引),參數(shù)默認(rèn)值為 0; end([group]) 方法用于獲取分組匹配的子串在整個(gè)字符串中的結(jié)束位置(子串最后一個(gè)字符的索引+1),參數(shù)默認(rèn)值為 0; span([group]) 方法返回 (start(group), end(group))。 再看看一個(gè)例子:

實(shí)例
>>>import re
>>> pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I) # re.I 表示忽略大小寫(xiě)
>>> m = pattern.match('Hello World Wide Web')
>>> print m # 匹配成功,返回一個(gè) Match 對(duì)象
<_sre.sre_match>
>>> m.group(0) # 返回匹配成功的整個(gè)子串
'Hello World'
>>> m.span(0) # 返回匹配成功的整個(gè)子串的索引
(0, 11)
>>> m.group(1) # 返回第一個(gè)分組匹配成功的子串
'Hello'
>>> m.span(1) # 返回第一個(gè)分組匹配成功的子串的索引
(0, 5)
>>> m.group(2) # 返回第二個(gè)分組匹配成功的子串
'World'
>>> m.span(2) # 返回第二個(gè)分組匹配成功的子串索引
(6, 11)
>>> m.groups() # 等價(jià)于 (m.group(1), m.group(2), ...)
('Hello', 'World')
>>> m.group(3) # 不存在第三個(gè)分組
Traceback (most recent call last):
File "", line 1, in
IndexError: no such group

  

findall

在字符串中找到正則表達(dá)式所匹配的所有子串,并返回一個(gè)列表,如果沒(méi)有找到匹配的,則返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

語(yǔ)法格式為:

re.findall(string[, pos[, endpos]])

參數(shù):

pattern : 正則中的模式字符串
repl : 替換的字符串,也可為一個(gè)函數(shù)
string : 要被查找替換的原始字符串
count : 模式匹配后替換的最大次數(shù),默認(rèn) 0 表示替換所有的匹配
flags : 編譯時(shí)用的匹配模式,數(shù)字形式

string 待匹配的字符串。 pos 可選參數(shù),指定字符串的起始位置,默認(rèn)為 0。 endpos 可選參數(shù),指定字符串的結(jié)束位置,默認(rèn)為字符串的長(zhǎng)度。 查找字符串中的所有數(shù)字:

實(shí)例
import re

pattern = re.compile(r'\d+') # 查找數(shù)字
result1 = pattern.findall('runoob 123 google 456')
result2 = pattern.findall('run88oob123google456', 0, 10)

print(result1)
print(result2)

輸出結(jié)果:

['123', '456']
['88', '12']

re.finditer

和 findall 類(lèi)似,在字符串中找到正則表達(dá)式所匹配的所有子串,并把它們作為一個(gè)迭代器返回。

re.finditer(pattern, string, flags=0)

參數(shù):

參數(shù) 描述
pattern 匹配的正則表達(dá)式
string 要匹配的字符串
flags 標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫(xiě),多行匹配等等。參見(jiàn):正則表達(dá)式修飾符 – 可選標(biāo)志
實(shí)例
import re

it = re.finditer(r"\d+","12a32bc43jf3")
for match in it:
print (match.group() )

輸出結(jié)果:

12
32
43
3

re.split

split 方法按照能夠匹配的子串將字符串分割后返回列表,它的使用形式如下:

re.split(pattern, string[, maxsplit=0, flags=0])

參數(shù):

參數(shù) 描述
pattern 匹配的正則表達(dá)式
string 要匹配的字符串
maxsplit 分隔次數(shù),maxsplit=1 分隔一次,默認(rèn)為 0,不限制次數(shù)
flags 標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫(xiě),多行匹配等等。參見(jiàn):正則表達(dá)式修飾符 – 可選標(biāo)志
實(shí)例
>>>import re
>>> re.split('\W+', 'runoob, runoob, runoob.')
['runoob', 'runoob', 'runoob', '']
>>> re.split('(\W+)', ' runoob, runoob, runoob.')
['', ' ', 'runoob', ', ', 'runoob', ', ', 'runoob', '.', '']
>>> re.split('\W+', ' runoob, runoob, runoob.', 1)
['', 'runoob, runoob, runoob.']

>>> re.split('a*', 'hello world') # 對(duì)于一個(gè)找不到匹配的字符串而言,split 不會(huì)對(duì)其作出分割
['hello world']

本文標(biāo)題:通過(guò)pythonre模塊進(jìn)行檢索和替換
分享地址:http://www.5511xx.com/article/cdpejpg.html