Python之正規表示式

2021-08-11 20:35:08 字數 4355 閱讀 4443

import re

regex = "\w?\d.*"

target = "a123#"

# 從頭開始匹配,如果開始蔓延匹配上就沒有匹配到

ret = re.match(regex,target)

# 找到所有數字進行返回

ret = re.findall("\d"

,"#se233er11ere"

) # 233 11

# 找到所有字母進行返回

ret = re.findall("[a-za-z]"

,"#se233erere"

) #  se erere

# 從這個字串開始進行查詢,找到第乙個匹配的進行返回

ret = re.search("\d"

,"#se233er11ere"

) # 233

# sub

(pattern,"

替換字元",

"被替換字元

",count=

替換次數,如果不寫,預設是所有)

s = re.sub("\d"

,"-"

,"nicky1987hash0612"

,count=1)

print

(s)if ret:

print

(ret)

二 正規表示式深入

2.1 compile方法

"""

re.compile:

用於將字串形式的正規表示式編譯為

pattern

物件第二個引數是

flags

:代表匹配模式

1 re.i

或者re.ignorecase:

忽略大小寫

2 re.m

或者re.multiline

:多行模式,改變

^ $的行為

3 re.s(dotall):

點任意匹配模式,改變

.的行為

"""pattern=re.compile("^\d")#

字串非

abc開頭,大小寫敏感

p1=re.compile("[^abc]"

,re.ignorecase)

# 字串非

abc開頭,大小寫不敏感

p2=re.compile("[^abc]"

)p3=re.compile("^\d"

,re.m)

p4=re.compile("^\d"

)

2.2 pattern物件

pattern物件是乙個編譯好的正規表示式,通過pattern提供的一系列方法可以對文字進行匹配查詢

2.2.1 查詢可以成功匹配的子串 search

search(string[, pos[, endpos]]) |re.search(pattern, string[, flags]):

# 

查詢從字串的

pos下標開始到

endpos

下標結束的時候去匹配字串

# 注意只要匹配成功一次

後面的不在匹配

pattern=re.compile("\d"

)target= "123abcabc darling i love you 1314 forever##"

#re.search("\d",target)

match=pattern.search(target,35,len

(target))

ifmatch:

print

(match.group())

2.2.2 按照能夠匹配的子串將string,分割後返回列表。maxsplit用於指定最大分割次數,不指定就全部分割

pattern=re.compile("\d"

)target= "abc123abcdarling i love you 1314 forever##"

sublist=pattern.split(target,1)

print

(sublist)

結果:['abc', 'abcdarling i love you 1314 forever##']

2.2.3 搜尋字串,以列表形式返回全部能匹配的子串。

# findall

是查出所有匹配的字串,而不是像

search

一樣,只是查詢出第乙個匹配的

pattern=re.compile("\d"

)target= "abc123abcdarling i love you 1314 forever##"

sublist=pattern.findall(target)

print

(sublist) # ['123', '1314']

2.2.4 搜尋string,返回乙個順序訪問每乙個匹配結果(match物件)的迭代器。

pattern=re.compile("\d"

)target= "abc123abcdarling i love you 1314 forever##"

subit=pattern.finditer(target)

forsinsubit:

print

(s.group())

2.2.5 匹配時用指定的字元替換,count用於指定最多替換次數,不指定時全部替換。

# count

用於指定最多替換次數,不指定時全部替換。

pattern=re.compile("[\d]"

)target= "abc123abcdarling i love you 1314 forever##"

ret=pattern.sub("_"

,target,count=3)

print

(ret) # abc___abc darlingi love you ____ forever##

print

(re.sub("\d"

,"_"

,target))

# abc_abc darling ilove you _ forever##

Python之正規表示式

正規表示式正規表示式主要用來匹配字串,例如 判斷乙個字串是否是乙個合法的 思想是用描述性的語言給字串乙個規則。re模組中的match函式提供了這種功能,若匹配成功則返回匹配物件,否則返回none。一 語法 d 表示匹配數字 w 表示匹配字母或數字 可以匹配任意字元 s可以匹配乙個空格或者tab 特殊...

Python之正規表示式

正規表示式元字元如下 匹配除換行符以外的所以字元 規定匹配模式必須出現在目標字串的開頭,例如 hell hello hellboy 規定匹配模式必須出現在目標字串的結尾,例如 ar car bar 其前乙個字元必須在目標物件中連續出現零次或多次 其前乙個字元必須在目標物件中連續出現一次或多次 其前乙...

Python之正規表示式

匯入re模組 檢索和替換 re.sub re.sub pattern,repl,string,count 0,flags 0 pattern 正則中的模式字串 repl 替換的字串,也可為乙個函式 string 要被查詢替換的原始字串 count 模式匹配後替換的最大次數,預設 0 表示替換所有的匹...