Python—正則表達式(re)

正則表達式(re)

一、特殊符號

"""
引入正則表達式:進行模糊匹配
*:匹配0 ~ ∞次;貪婪匹配
    在*後加?(*?)設置爲惰性匹配,按最小次數匹配
.:通配符
?:匹配0 ~ 1次
+:匹配1 ~ ∞次;貪婪匹配
    在+後加?(+?)設置爲惰性匹配,按最小次數匹配
^:從頭匹配
$:從尾匹配
{}:自定義匹配次數
():
    ?:  : 取消分組優先級
[]:字符集 其中選擇一個匹配,取消元字符的特殊功能(\ ^ - 例外)
    [0-9], [a-z], [A-Z]
    [^t]:表示除了t以外的所有字符,表示取反
\:反斜槓後面跟元字符去除其特殊功能,後面跟普通字符實現特殊功能
        \d = [0-9]
        \D = [^0-9]
        \s = [ \t\r\n\f\v]
        \S = [^ \t\r\n\f\v]
        \w = [a-zA-Z0-9]
        \W = [^ a-zA-Z0-9]
        \b: 匹配一個特殊字符的邊界,也就是指單詞和空格間的文職
| :或

re.findall(pattern, string)  找出所有符合規則的字符
re.finditer(pattern, string)  返回一個迭代器
re.search(pattern, string)  返回匹配到的第一個對象,可以用group()方法返回結果
re.match()  旨在字符串開始匹配,返回匹配到的第一個對象,可以用group()方法返回結果
re.split(pattern, string, maxsplit, flags)  按規則分隔字符串
re.sub(pattern, repl, string, count): 替換
re.subn() : 替換,會返回替換了多少次
re.compile(pattern)  # 將規則編譯成一個對象方便多次使用
"""

二、re方法

import re
ret = re.findall("o[qwl]f", 'wolf')  # 選擇[]中的一個匹配,
print(ret)

[‘olf’]

ret = re.findall('[w,*,,,.]', 'wwolf*,.')  # 取消元字符的特殊功能
print(ret)

[‘w’, ‘w’, ‘*’, ‘,’, ‘.’]

ret = re.search('[\d]', '213213')  # 匹配出滿足條件的第一個結果
print(ret)
print(ret.group())

<re.Match object; span=(0, 1), match=‘2’>
2

ret = re.search('a\+', 'a+d2')
print(ret.group())

a+

ret = re.findall(r'2\\\*c', 'dw2\*c')	# 在表達式前加r取消元字符特殊功能
print(ret)

[‘2\*c’]

# ?P<id>分組命名
ret = re.search('(?P<id>\d{3})/(?P<name>wo[l,w]f)', 'asd212/wolf')
print(ret.group('id'))
print(ret.group('name'))  

212
wolf

ret = re.split('s|a|\d', 'wdfsdwfadwef2w')	# 按s、a、數字將字符串分成列表
print(ret)
ret = re.split('[j,s]', 'sdjksal')  # 先按j分,分開之後的組在分別用s分
print(ret)

[‘wdf’, ‘dwf’, ‘dwef’, ‘w’]
[’’, ‘d’, ‘k’, ‘al’]

ret = re.sub('\d', 'w', '21e12er123r', 3)	# 將字符串中對應的字符串替換(old_str, new_str, origin_str, count, flags)
print(ret)

wwew2er123r

p = re.compile('\.com')	 # 將匹配表達式單獨列出
str1 = 'wdawd.com2dasd.com'
ret = re.findall(p, str1)
print(ret)

[’.com’, ‘.com’]

ret = re.findall('www.(?:baidu).com', 'www.baidu.com')	# 匹配括號中的表達式
print(ret)

[‘www.baidu.com’]

ret = re.finditer('\d', '2da2')		# 匹配結果爲匹配到的對象迭代器,用next取出,
print(next(ret).group())
print(next(ret).group())

2
2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章