1. 程式人生 > >re模塊(正則)

re模塊(正則)

忽略大小寫 表達式 ont 範圍 mage \n 列表 符號 int

一, 什麽是正則?

  正則就是用一些具有特殊含義的符號組合到一起(稱為正則表達式)來描述字符或者字符串的方法.

  在python中,正則內嵌在python中,並通過re模塊實現,正則表達模式被編譯成一系列的字節碼,然後由c編寫的匹配引擎執行.

二,常用的匹配模式(元字符)

技術分享圖片

import re

# 將所有的數據都找出來放進列表中list,一一匹配
print(re.findall(alex, haha alex is alex is dsb))
# >>>: [‘alex‘, ‘alex‘]


# \w 匹配字母數字及下劃線(一個\w每次匹配一個字符)
# \W 匹配非字母數字及下劃線 print(re.findall(\w,Aah123 +-_)) # >>>: [‘A‘, ‘a‘, ‘h‘, ‘1‘, ‘2‘, ‘3‘, ‘_‘] print(re.findall(\w\w,Aah123 +-_)) # >>>: [‘Aa‘, ‘h1‘, ‘23‘] print(re.findall(\w9\w,Aa9h123 aaa9c+-_)) # >>>: [‘a9h‘, ‘a9c‘] # \s 匹配任意空白字符,等價於\t\n\r\f # \S 匹配非空字符
# \d 匹配任意數字,[0-9] # \D 匹配任意非數字 # ^ : 僅從開頭開始匹配 # $ : 僅從尾部開始匹配 print(re.findall(^alex, alex is alex is alex)) # >>>: [‘alex‘] print(re.findall(^alex, 1alex is alex is alex)) # >>>: []

重復匹配: | . | * | ? | .* | .*? | + | {n,m}

# . :代表一個字符,該字符可以是任意字符(除換行符)
print(re.findall(
a.c, a alc aaac a c asfdsaf)) # >>>: [‘alc‘, ‘aac‘, ‘a c‘] print(re.findall(a.c, a alc aaac a\nc asfd,re.DOTALL)) #DOTALL使得.匹配包括換行符在內的所有字符 # >>>: [‘alc‘, ‘aac‘, ‘a\nc‘]

# ? :代表左邊那一個字符出現0次或者1次
print(re.findall(ab?, a ab abb abbbb a123b a123bbbb))
# >>>: [‘a‘, ‘ab‘, ‘ab‘, ‘ab‘, ‘a‘, ‘a‘]

# * :代表左邊那一個字符出現0次到無窮次
print(re.findall(ab*, a ab abb abbbb a123b a123bbbb))
# >>>: [‘a‘, ‘ab‘, ‘abb‘, ‘abbbb‘, ‘a‘, ‘a‘]

# + :代表左邊那一個字符出現1次到無窮次
print(re.findall(ab+, a ab abb abbbb a123b a123bbbb))
# >>>: [‘ab‘, ‘abb‘, ‘abbbb‘]
# {n,m} :代表左邊那一個字符出現n次到m次
print(re.findall(ab{1,3}, a ab abb abbbb a123b a123bbbb))
# >>>: [‘ab‘, ‘abb‘, ‘abbb‘]

# .* :匹配任意0個到無窮個字符,貪婪匹配
print(re.findall(a.*c,a132142qwdcavcccc(((()))))c2333))
# >>>: [‘a132142qwdcavcccc(((()))))c‘]

# .*? :匹配任意0個到無窮個字符,非貪婪匹配
print(re.findall(a.*?c, a132142qwdcavcccc(((()))))c2333))
# >>>: [‘a132142qwdc‘, ‘avc‘]

# \ :轉義
print(re.findall(a\\\\c,a\c aac))
print(re.findall(ra\\c,a\c aac))
# >>>: [‘a\\c‘]

# 忽略大小寫
# print(re.findall(‘alex‘,‘my name is alex ALex is dSB‘,re.I))
# # >>>: [‘alex‘, ‘ALex‘]

# msg = ‘‘‘my name is egon
# asdfassg egon
# 122324324egon‘‘‘
# print(re.findall(‘egon$‘,msg,re.M))
# >>>: [‘egon‘, ‘egon‘, ‘egon‘]

# []: 代表匹配一個字符,這個字符是來自於自定義的範圍
print(re.findall(a[1]c, a a1c aaac a c asfdsaf,re.DOTALL))
# >>>: [‘a1c‘]
print(re.findall(a[0-9]c, a a1c aaac a7c asfdsaf,re.DOTALL))  #[0-9]的數字
# >>>: [‘a1c‘, ‘a7c‘]
print(re.findall(a[a-zA-Z]c, a a1c aaac a7c asfdsaf,re.DOTALL))   #所有字母
# >>>: [‘aac‘]
print(re.findall(a[+*/-]c, a a1c aaac a7c asfdsaf,re.DOTALL))     #-代表連字符,在首尾才表示符號意思

re模塊(正則)