1 基礎(chǔ)匹配用法
# 演示Python中正則表達式re模塊的3個基礎(chǔ)匹配方法
import re
# 1. match()方法 從頭匹配
string = "hello world"
result = re.match("hello", string) # 如果頭部沒有匹配成功就直接失敗了,后面就不會繼續(xù)匹配了
print(result)
print(result.group())
print(result.span())
print("--------------------")
# 2. search()方法 搜索匹配
s1 = "python11888999python"
result = re.search("python", s1) # 搜索整個字符串,找到第一個匹配的,并返回結(jié)果
print(result)
print(result.group())
print(result.span())
print("----------------------")
# 3. findall()方法 搜索匹配所有,返回一個列表
s2 = "python11888999python"
result = re.findall("python", s2)
print(result)
print("--------------------")
文章來源地址http://www.zghlxwxcb.cn/news/detail-803207.html
2 元字符匹配
"""
字符 功能
. 匹配任意1個字符(除了\n), \. 匹配點本身
[...] 匹配[]中列舉的字符, 字符集合, [0-9a-zA-Z_], [a-z], [0-9], [...]
\d 匹配數(shù)字, [0-9]的簡寫
\D 匹配非數(shù)字, [^0-9]的簡寫
\w 匹配字母或數(shù)字或下劃線, [a-zA-Z0-9_]的簡寫
\W 匹配非(字母或數(shù)字或下劃線), [^a-zA-Z0-9_]的簡寫
\s 匹配空白, [ \t\n\x0b\r]的簡寫, 即空格, tab鍵
\S 匹配非空白, [^ \t\n\x0b\r]的簡寫
[^...] 匹配除了[]中列舉的字符之外的字符, 反向字符集合, [^0-9], [^a-zA-Z_]
"""
import re
s = "itheima @@ Python2 !!999 # It"
result = re.findall(r"\d", s) # 加上 r 可以表示字符串中的轉(zhuǎn)義字符無效
print(result)
print("---------------------")
result2 = re.findall(r"\W", s) # 非單詞字符
print(result2)
print("---------------------")
# 匹配所有的英文字母
result3 = re.findall(r"[a-zA-Z]", s)
print(result3)
"""
數(shù)量匹配:
* 匹配*號 前的字符 0次或無數(shù)次
+ 匹配+號 前的字符 1次或無數(shù)次
? 匹配?號 前的字符 0次或1次
{m} 匹配{m} 前的字符 出現(xiàn)m次
{m,} 匹配{m} 前的字符 出現(xiàn)最少m次
{m,n} 匹配{m,n} 前的字符 出現(xiàn) m到n次
"""
"""
邊界匹配:
^ 匹配一行字符串的開頭
$ 匹配一行字符串的結(jié)束
\b 匹配一個單詞的邊界
\B 匹配非單詞邊界
"""
"""
分組匹配:
| 匹配左右任意一個表達式
(...) 分組, 將 ()中的內(nèi)容作為一組, (abc.efs), (a|b|c)
"""
# 案例: (注意: 正則表達式中千萬不要隨意價格空格)
# 1. 匹配賬號: 只能由字母數(shù)字組成,長度限制6-10位
r = '^[a-zA-Z0-9]{6,10}$'
s = '1232dfgf'
result = re.findall(r, s)
print(result)
print('---------------------')
# 2. 匹配QQ號, 要求純數(shù)字, 長度5-11,第一位不為0
r = '^[1-9][0-9]{4,10}$' # {4,10} 開頭已經(jīng)占了一位了
s_qq = '329809378'
result_qq = re.findall(r, s_qq)
print(result_qq)
print('---------------------')
# 3. 匹配郵箱地址,只允許請qq 、163、gmail這三種郵箱地址
# abc.ghs.edu@qq.com
# abc.ghs.edu@qq.jsx.ss.com
# abc.@163.com
r = '^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$'
s = 'abc.ghs.edu@qq.com'
result = re.findall(r, s) # findall 會返回正則中的分組 () -> [('.edu', 'qq', '.com')]
# 所以需要整體再放入一個組中
r = '(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$)'
result_all = re.findall(r, s)
result_match = re.match(r, s)
print(result_match)
print(result_all)
print("----------------------")
文章來源:http://www.zghlxwxcb.cn/news/detail-803207.html
到了這里,關(guān)于Python進階知識:整理6 -> 正則表達式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!