常用模組之re模組

2022-09-10 10:48:15 字數 3546 閱讀 7331

正規表示式是一門獨立語言

是通過一些特殊符號使用,從而在字串中篩選出想要的結果

如果想在python中使用正則,則需借助於內建模組re

"""字元組

: 包含乙個字元或者的意思

[a-z] :a-z中任意取乙個字元

[a-z] :a-z中任意取乙個字元

[0-9] :0-9中任意取乙個字元

特殊符號:

# 特殊符號預設也只能單個單個字元匹配

. 匹配除換行符以外的任意字元

\d 匹配數字

^ 匹配字串的開始

$ 匹配字串的結尾

"""^與$組合使用可以精準的查詢資料"""

a|b 匹配字元a或字元b

() 匹配括號內的表示式也表示乙個組(不會影響正規表示式的匹配)

[...] 匹配字元組中的字元

[^...] 匹配除了字元組中字元的所有字元

\ 在正規表示式中表示取消轉義 # 在pyhon直譯器中r' '表示轉義

量詞: * 重複零次或多次

+ 重複一次或多次

? 重複零次或一次

重複n次

重複n次或多次

重複n到m次

貪婪匹配與非貪婪匹配

# 正規表示式

<.> '''預設貪婪匹配 盡可能多的匹配'''

# 將貪婪變為非貪婪 只需要在量詞的後面加問號即可

<.> '''非貪婪匹配 盡可能少的匹 結束條件由左右兩邊決定'''

# 限制手機號的輸入

# 普通方法使用

phone = input('請輸入您的手機號:').strip()

if len(phone) == 11:

if phone.isdigit():

if phone.startswith('15') or \

phone.startswith('18') or \

phone.startswith('19'):

print('手機號正確')

else:

print('手機號不正確')

else:

print('手機號不正確')

else:

print('手機號不正確')

# 正則方法使用

import re

phone_number = input('請輸入您的手機號:').strip()

if re.match('^(15|18|19)[0-9]$', phone_number):

print('手機號正確')

else:

print('手機號錯誤')

常用用法:

re.findall # 匹配全部符合的資料後返回列表

re.search # 匹配到乙個符合的資料 使用group獲取結果

re.match # 從開頭開始匹配 (開頭必須對上) 使用group獲取結果

finditer # 變成可迭代物件

import re

res = re.findall('.*', 'jason')

res = re.findall('2.*1','aashdklah21h21')

res = re.search('6', 'akdhisagfaifjweoaa0980a')

res = re.match('sd', 'sdnospdghlds')

print(res) # 找不到則返回none

print(res.group()) # 找不到則報錯

其他用法:

split # 依次分割

sub # 替換

subs # 替換後組成元組後返回(並提示更換了幾處)

1.# 去除分割的字元 在[ab]中是分割a或b的字元

# 在'ab'中則分割以ab連著的字元

res = re.split('[ab]', 'abdkashdlbsa')

# ['', '', 'dk', 'shdl', 's', '']

res = re.split('ab', 'abdkashdlbsa')

# ['', 'dkashdlbsa']

2.# 將字元替換成自己想替換的

res = re.sub('a', 'a', 'akdbaaaa')

# akdbaaaa

3.# 將字元替換後並以元組的形式展示後 提示執行了幾次

res = re.subn('a', 'a', 'akdbaaaa')

# ('akdbaaaa', 5)

# 集合使用

regexp_obj = re.compile('\d+')

res = regexp_obj.search('absd213j1hjj213jk')

res1 = regexp_obj.match('123hhkj2h1j3123')

res2 = regexp_obj.findall('1213k1j2jhj21j3123hh')

print(res,res1,res2)

findall:

1.針對分組優先

2.取消優先級別 ?:

# 無名分組 優先順序

res = re.findall

("^[1-9]\d(\d[0-9x])?$",'11018220000513162x')

print(res) # ['62x']

# 取消優先順序

res = re.findall

("^[1-9]\d(?:\d[0-9x])?$",'11018220000513162x')

print(res) # ['11018220000513162x']

search:

有名分組 ?p《名字》

# 有名分組 按照索引取值,或關鍵字取值

常用模組之re

正規表示式是指用一連竄的特殊字元來表示常用的符號,用來篩選和匹配想要的內容 注 1.在括號內用 可以將查詢到非括號中內容也顯示出來 2.括號即表示乙個組,也表示只顯示內容 匹配所有的字元字母下劃線 print re.findall w asdas123 sd.dsad13 dsa a s d a s...

常用模組 re模組

由堆具有特殊意義的字元組成的式子。用於匹配查詢字串內容。主要學習重點,就是學習這些字元的含義。abc 表示式不包含任何特殊字元,就是精準匹配,說白了判斷是否相同 print re.findall abc abcbbb abc n t f 符號含義 a從字元的開始處開始匹配 z從字元的結尾處匹配 從字...

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

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