常用模組之re

2021-10-13 10:22:39 字數 4155 閱讀 9075

正規表示式是指用一連竄的特殊字元來表示常用的符號,用來篩選和匹配想要的內容

注:1.在括號內用:?可以將查詢到非括號中內容也顯示出來

2.括號即表示乙個組,也表示只顯示內容

# 匹配所有的字元字母下劃線

print

(re.findall(

'\w'

,'asdas123_sd.dsad13_dsa'))

# ['a', 's', 'd', 'a', 's', '1', '2', '3', '_', 's', 'd', 'd', 's', 'a', 'd', '1', '3', '_', 'd', 's', 'a']

# 匹配所有的非字母字元下劃線

print

(re.findall(

'\w'

,'asdasdasdaagqg1``.,/'))

# ['`', '`', '.', ',', '/']

# 匹配所有的數字

print

(re.findall(

'\d'

,'231231sdasdjajd'))

# ['2', '3', '1', '2', '3', '1']

# 匹配所有的非數字

print

(re.findall(

'\d'

,'123123asdasda'))

# ['a', 's', 'd', 'a', 's', 'd', 'a']

# 匹配所有的空白符

print

(re.findall(

'\s'

,'\tadsa\n\t'))

# ['\t', '\n', '\t']

# 匹配所有的非空白符

print

(re.findall(

'\s'

,'\t\n123asda_./,'))

# ['1', '2', '3', 'a', 's', 'd', 'a', '_', '.', '/', ',']

# ^匹配以什麼開頭,放在開始位置

print

(re.findall(

'^hell.*?d'

,'hello woraddddd'))

# ['hello worad']

# $匹配以什麼結尾,放在結束位置

print

(re.findall(

'ba$'

,'asdasdsdsba'))

# ['ba']

# .可以匹配任何乙個字元

print

(re.findall(

'.',

'as_1/.,;'))

# ['a', 's', '_', '1', '/', '.', ',', ';']

# 表示匹配括號中的任何乙個字元

print

(re.findall(

'[0-9a-za-z]'

,'as0123adadadas_.,/'))

# ['a', 's', '0', '1', '2', '3', 'a', 'd', 'a', 'd', 'a', 'd', 'a', 's']

# [^]表示取反

print

(re.findall(

'[^0-9a-za-z]'

,'as0123adadadas_.,/'))

# ['_', '.', ',', '/']

# * 左邊的值出現零次到無窮次數

print

(re.findall(

'ab*'

,'aababbabbbabbbbbbb'))

# ['a','ab', 'abb', 'abbb', 'abbbbbbb']

# + 左邊的值出現一次到無窮次數

print

(re.findall(

'ab+'

,'aababbabbbabbbbbbb'))

# ['ab', 'abb', 'abbb', 'abbbbbbb']

# ? 左邊的值出現0,1次

print

(re.findall(

'ab?'

,'aababbbabbbabbbbb'))

# ['a', 'ab', 'ab', 'ab', 'ab']

# ,左邊的字元出現n-m次

print

(re.findall(

'ab'

,'ababbabbabbbb'))

# ['ab', 'abb', 'abb', 'abb']

# .*搭配使用,貪婪模式,匹配任意的字元零到無數次,如果沒有加首尾則查詢無意義

print

(re.findall(

'a.*b'

,'asdasdasff2134\t\n/123.1,144'

,re.s )

)# 匹配規則a.*貪婪模式,會盡可能匹配多的字元,但要保證有乙個b給*後的b匹配,因此如果有多個b的話只用最後乙個有b留給b即可

#['asdasdasff213\t\n/123.1,144']

# .*?非貪婪模式,問號至多遇到一次末尾的值就結束,但末尾必須要有

print

(re.findall(

'a.*?b'

,'ab'))

# .*?非貪婪模式會在盡可能多的匹配字元的基礎上當遇到的值能被後面的正則內容匹配到時,就交給後面的內容

# |表示或 匹配擁有兩邊任意的都可以

print

(re.findall(

'abc(?:d|d)'

,'abcdeabcd'))

# () 直接拿到括號中的內容

print

(re.findall(

'\w+(mysql)'

,'acbmmmmmmysql'))

# ['mysql']

# ?:表示取消括號

print

(re.findall(

'\w+(?:mysql)'

,'abcmmmmysql'))

# \ 表示轉義字元,例如\\表示\

print

(re.findall(

'\\\.'

,'\.'))

['\\.'

]

import re

re.split(替換符(使用正則規則),替換物件,字串,替換次數) 分割,可以指定傳入的引數,

re.search() 會將第一次匹配到的物件返回

re.match() 會從字串開頭匹配,如果有則返回,如果不是則返回none,可以用re.search()+^代替

re.findall() 將所有匹配到的物件返回

import re

# re.findall() # 找到所有滿足的結果然後返回

# re.match() # 從開頭開始查詢,如有滿足則返回,如果不滿足則返回none

# re.search() # 返回一次查詢到的內容

# re.sub() # 將字串的內容替換掉,可以新增引數n指定次數,如果沒有指定則替換所有

sb = re.match(

'\d\w+'

,'1qdqwdqwdqw'

)print

(sb.group())

# 1qdqwdqwdqw

# group()返回查詢到的值,沒有返回none

sb1 = re.search(

'\d\w+'

,'1211d12d1ddqwdq'

)# 1211d12d1ddqwdq

print

(sb1.group())

sc = re.split(

'[:+-]'

,'a+b:c-d'

)# 按照指定的內容進行分割

print

(sc)

sd = re.sub(

'a',

'a',

'a abc abcd',1

)# 如果不指定引數則預設替換所有

print

(sd)

常用模組之re模組

正規表示式是一門獨立語言 是通過一些特殊符號使用,從而在字串中篩選出想要的結果 如果想在python中使用正則,則需借助於內建模組re 字元組 包含乙個字元或者的意思 a z a z中任意取乙個字元 a z a z中任意取乙個字元 0 9 0 9中任意取乙個字元 特殊符號 特殊符號預設也只能單個單個...

Python常用模組之re

2 python正則常用模組 2.1 re.match與re.search 函式說明 re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match 就返回none。re.search 掃瞄整個字串並返回第乙個成功的匹配。函式語法 re.match pattern,st...

常用模組 re模組

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