正規表示式是一門獨立語言
是通過一些特殊符號使用,從而在字串中篩選出想要的結果
如果想在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 ...