re是Python中最常見的正則表達式模塊,常用方法包括compile,match糯累,findall算利,finditer,search泳姐,split效拭,sub等。在一些字符串自身操作方法不方便使用的情況下,使用re模塊能夠非常方便地完成一些查找和替換等操作。
- compile 預(yù)先編譯好正則表達式,可為之后的重復(fù)使用節(jié)省時間缎患。
>>>import re
>>> url ="http://10.128.39.48:8058/net_command"
>>> reg = re.compile('^http:\/\/(.*?):(\d+?)\/net_command')
>>> result = reg.match(url)
>>> result.group()
'http://10.128.39.48:8058/net_command'
>>> result.group(0)
'http://10.128.39.48:8058/net_command'
>>> result.group(1)
'10.128.39.48'
>>> result.group(2)
'8058'
-
re.match(‘p’, ‘python’)
會在字符串的開頭匹配正則表達式:如果開頭即不符合,則匹配失敗慕的。
而re.search('net_command', url)
會掃描整個字符串,直到找到第一個匹配結(jié)果返回挤渔。 二者的匹配結(jié)果也可通過group()方法來獲取肮街。 -
re.findall('net_command', url)
會查找所有匹配結(jié)果,并返回結(jié)果列表。
而re.finditer()
找到匹配結(jié)果,將它們作為一個迭代器返回蚂蕴。 -
re.sub('net_command', 'command_net', url)
用于匹配結(jié)果的替換操作低散,等同于url.replace('net_command', 'command_net'). sub()
方法的第四個參數(shù)表示替換次數(shù),默認(rèn)0為全部替換。 -
re.split('/', url)
等同于url.split('/')
骡楼。split()方法的第三個參數(shù)表示分割次數(shù),默認(rèn)0為全部熔号。 -
start()
,end()
分別表示匹配結(jié)果的開始和結(jié)束索引鸟整。 而span()
則返回開始和結(jié)束索引組成的元組引镊。 - 正則表達式參數(shù):
re.VERBOSE
(或re.X)可使正則表達式結(jié)構(gòu)化,形式更易讀。
re.DOTALL
(或re.S)使得 . 匹配包括換行符在內(nèi)的任意字符篮条。
re.IGNORECASE
(或re.I)使得匹配對大小寫不敏感弟头。
re.MULTILINE
(或re.M)使得多行匹配生效,影響^和$的首尾匹配。 - 相比于re模塊涉茧,我們應(yīng)該盡可能地使用字符串自身的一些操作方法赴恨, 如replace和translate用于子字符串替換(替代
re.sub()
), index和find用于查找操作(替代re.search()
和re.match()
)伴栓。