正則表示式中的模式,函式,及使用規則
阿新 • • 發佈:2018-11-25
一、正則表示式轉義
正則中的特殊符號:
. * ? $ [] {} () | \
正則表示式匹配特殊字元如果需要加 \ 表達轉義,比如:
pattern string
python "\\$\\d+" "$10"
raw字串:原始字串對內容不解釋轉義,就表達內容原本意義
二、貪婪與非貪婪
貪婪模式:正則表示式的重複匹配總是儘可能多的向後匹配更多內容
* + ? {m,n} 非貪婪(懶惰模式):儘可能少的匹配內容 貪婪 -------》非貪婪 *? +? ?? {m,n}? e.g. In [58]: re.findall(r"ab+?","abbbbbbb") Out[58]: ['ab'] In [59]: re.findall(r'ab{3,4}?','abbbbbbbbb') Out[59]: ['abbb'] In [60]: re.findall(r'ab??','abbbbbbb') Out[60]: ['a']
三、正則表示式的子組
可以使用()為正則表示式建立子組,子組可以看作是正則表示式內部操作的一個整體 *子組是在正則表示式整體匹配到內容的前提下才會發揮作用,他不影響正則表示式整體去匹配目標內容這一原則 e.g. In [66]: re.search(r"(ab)+\d+","ababab1213").group() Out[66]: 'ababab1213' 子組所用: 1、作為內部整體可以改變某些元字元的行為 e.g. In [68]: re.search(r"\
[email protected]\w+\.(com|cn)","[email protected]").group() Out[68]: '[email protected]' 2、子組在某些操作中可以單獨匹配內容 e.g. In [72]: re.search(r"(https|http|ftp)://\S+","https://www.baidu.com").group() Out[72]: 'https://www.baidu.com' 自組使用注意事項: *一個正則表示式中可以有多個子組 *子組一般由外到內,由左到右稱之為第一,第二,第三...子組 *子組不能重疊,巢狀也不宜過多
四、捕獲組和非捕獲組
格式:(?P<name>pattern)
e.g. In [74]: re.search(r"(?P<dog>ab)cdef","abcdefghti").group('dog')
Out[74]: 'ab'
作用:可以通過組名更方便獲取某組內容
五、正則表示式設計原則
1、正確性,能正確匹配到目標內容
2、排他性,除了要匹配的內容,儘可能不會匹配其他內容
3、全面性,需要對目標的各種情況考慮,做到不遺漏
六、re模組
re. regex = compile(pattern,flags = 0)
功能:生成正則表示式物件
引數:pattern 正則表示式
flags 功能標誌位,豐富正則表示式的匹配功能
返回值:返回正則表示式物件
re.findall(pattern,string,flags)
功能:從目標字串查詢正則匹配內容
引數:pattern 正則表示式
string 目標字串
flags 標誌位
返回值:返回匹配到的內容
如果正則有子組則只返回子組對應的內容
regex.findall(string,pos,endpos)
功能:從目標字串查詢正則匹配內容
引數:pattern 正則表示式
string 目標字串
pos 匹配目標的起始位置
endpos 匹配目標的終止位置
返回值:返回匹配到的內容
如果正則有子組則只返回子組對應的內容
re.split(pattern,string,flags = 0)
功能:根據匹配內容切割字串
引數:pattern string flags(同上)
返回值:返回列表,列表中為切割的內容
re.sub(pattern,replaceStr,string,max,flags)
功能:替換正則匹配到的目標子串部分
引數:pattern
replaceStr 要替換的內容
string(同上)
max 最多替換幾處 預設全部替換
flags(同上)
返回值:返回替換後的字串
re.subn(pattern,replaceStr,string,max,flags)
功能:替換正則匹配到的目標子串部分
引數:pattern
replaceStr 要替換的內容
string(同上)
max 最多替換幾處 預設全部替換
flags(同上)
返回值:返回一個元組,為實際替換了幾處和替換後的字串
re.finditer(pattern,string,flags)
功能:使用正則表示式匹配目標字串
引數:pattern string flags(同上)
返回值:返回一個迭代物件,迭代到的內容是一個match物件
fullmatch()
功能:完全匹配目標字串
引數:pattern,string,flags
返回值:返回匹配到的match物件,如果沒有匹配成功返回None
match(pattern,string,flags)
功能:從開頭位置匹配目標字串
引數:pattern,string,flags
返回值:返回匹配到的match物件,如果沒有匹配成功返回None
search(pattern,string,flags)
功能:從開頭位置匹配目標字串
引數:pattern,string,flags
返回值:返回匹配到的match物件,如果沒有匹配成功返回None
compile物件屬性:
flags:標誌位
pattern:正則表示式
groups:有多少子組
groupindex:捕獲組形成組名和序列號的字典,組名為鍵,序列號為值