python模組 之 re模組

2021-09-26 03:24:28 字數 3671 閱讀 7138

功能:實現python對正規表示式對支援與應用,將想要得到對內容按照正規表示式匹配出來

應用場景:爬蟲指令碼、對使用者輸入內容進行合規檢查(如qq格式檢查)等

功能:匹配物件中所有符合正規表示式的內容,並取出來

返回值:列表,所匹配到對項都會返回到列表中

import re

content = '13621abc15323def19323'

regex = r'1[3-9]\d'

ret = re.findall(regex,content)

print(ret)

#返回值:['13621', '15323', '19323']

功能:從開頭開始匹配,任何地方有符合規則的都返回乙個(只返回乙個)

返回值:re自定義型別

import re

content = '13621abc15323def19323'

regex = r'(1[3-9]\d)(\d)'

ret = re.search(regex,content)

print(ret)

#返回值:<_sre.sre_match object; span=(0, 5), match='13621'>

search 取分組中的內容 group()

根據序號取

import re

content = '13621abc15323'

regex = r'(1[3-9]\d)(\d)(1[3-9]\d)'

ret = re.search(regex,content)

print(ret.group()) # 13621abc15323

print(ret.group(0)) # 13621abc15323

print(ret.group(1)) # 13621

print(ret.group(2)) # abc

print(ret.group(3)) # 15323

根據組名取

import re

content = '136abc15323'

regex = r'(?p\d)(?p\d)(?p\d)'

ret = re.search(regex,content)

print(ret.group()) # 136

print(ret.group('num1')) # 1

print(ret.group('num2')) # 3

print(ret.group('num3')) # 6

分組的引用

注:由於?p=num1是引用了num1分組,所以它匹配到的內容必須和num1匹配到到內容一樣

import re

content = '136abc15332'

regex = r'(?p\d)(?p=num1)(?p\d)'

ret = re.search(regex,content)

print(ret.group())

# 332

功能:

從開頭匹配,若開頭部分匹配到則匹配成功,否則失敗

匹配使用者輸入的內容是否合法時,都是用match

返回值:

匹配到:re自定義型別

未匹配到:none

import re

content = 'supervisorctl'

ret1 = re.match('super',content)

ret2 = re.match('visor',content)

ret3 = re.search('visor',content)

print(ret1) # <_sre.sre_match object; span=(0, 5), match='super'>

print(ret2) # none

print(ret3) # <_sre.sre_match object; span=(5, 10), match='visor'>

功能:預編譯,預先編譯我們寫的規則,方便**中多次引用

import re

regex = r'\d'

content = 'admin:123456;user:654321'

rule = re.compile(regex)

ret = rule.findall(content)

print(ret)

# 返回結果:['123456', '654321']

功能:返回乙個迭代器,迴圈取出的是re的自定義型別;可通過group取值,能夠節省空間

import re

content = 'admin:123456;user:654321;root:987654'

ret = re.finditer(r'\d',content)

print(ret) # for i in ret:

print(i.group()) # 123456 654321 987654

功能:根據正則做切割

import re

regex1 = r'\d'

regex2 = r'\d'

content = 'abc123def456ghi'

ret1 = re.split(regex1,content)

ret2 = re.split(regex2,content)

print(ret1) # ['abc', '', '', 'def', '', '', 'ghi']

print(ret2) # ['abc', 'def', 'ghi']

功能:將滿足正則的部分替換成指定的內容(可指定替換個數)

用法:re.sub(正則,要替換的內容,待替換的字串,要替換的個數)

import re

regex1 = r'\d'

regex2 = r'\d'

content = 'abc123def456ghi'

ret1 = re.sub(regex1,'m',content,1)

ret2 = re.sub(regex2,'h',content,2)

print(ret1) # abcm23def456ghi

print(ret2) # abchdefhghi

功能:替換所有滿足正則的部分

用法:re.sub(正則,要替換的內容,待替換的字串)

返回值:元祖(元素1:替換後的結果;元素2:替換的次數)

import re

regex1 = r'\d'

regex2 = r'\d'

content = 'abc123def456ghi'

ret1 = re.subn(regex1,'m',content)

ret2 = re.subn(regex2,'h',content)

print(ret1) # ('abcmmmdefmmmghi', 6)

print(ret2) # ('abchdefhghi', 2)

python內建模組之re模組

在python要想使用正則必須借助於模組,re就是其中之一 查詢字串中所有匹配到的字元,並返回乙個列表,沒有匹配資料則返回乙個空列表 import re re.findall 正規表示式 帶匹配的文字 根據正則匹配除所有符合條件的資料 res re.findall b eva jason jacks...

python模組 re模組

匹配任意字元 匹配指定字元類別 字元開頭 字元結尾 取非字元 重複多次字元 0次或多次 重複多次字元 1次或多次 重複單次字元 左右表示式任意匹配 重複m到n次字元 重複m次字元 d 匹配任何十進位制數,相當於 0 9 d 匹配任何非數字字元,相當於 0 9 s 匹配任何空白字元,相當於 fdss ...

python常用模組之re模組(正則)

python種的re模組常用的5種方法,分別是re.match re.search re.findall re.split re.sub。在介紹五種方法之前,需要介紹一下正則的基礎。表示任意字元,除 n以為 轉義字元 字符集,表示取其中任意乙個字元。比如 abc d 可以匹配到ad bd cd。d ...