python之正規表示式

2021-10-09 06:11:29 字數 4828 閱讀 8838

#正規表示式是記錄文字規則的**

#是乙個特殊的字串行

#普通字元和元字元組成的。其實就是對元字元的學習

import re

#python中特殊的庫,包含正規表示式,元字串等

reg_string =

"hello6232pyeh@qwhg.@!hellohh"

reg =

"hello"

result = re.

findall

(reg,reg_string)

print

(result)

'''元字元

常用的元字元

.匹配換行符以外的任意字元

\w 匹配字母或數字或下劃線或漢字

\s 匹配任意的空白符

\d 匹配數字

\b 匹配單詞的開始或結束

^ 匹配字串的開始

$ 匹配字串的結束

'''reg_string =

"hello62_王 32 pyeh@qwhg.@!hellohh"

reg =

"."s = re.

findall

(reg,reg_string)

print

(s)reg =

"\d"

s = re.

findall

(reg,reg_string)

print

(s)reg =

"\w"

s = re.

findall

(reg,reg_string)

print

(s)reg =

"\s"

s = re.

findall

(reg,reg_string)

print

(s)reg =

"\b"#???

????

????

????

????

????

??s = re.

findall

(reg,reg_string)

print

(s)reg =

"^hello"

s = re.

findall

(reg,reg_string)

print

(s)reg =

"hh$"

s = re.

findall

(reg,reg_string)

print

(s)#反義**

'''.匹配換行符以外的任意字元

\w 匹配任意不是字母或數字或下劃線或漢字

\s 匹配任意不是空白符的字元

\d 匹配非數字

\b 匹配不是單詞開始或結束的位置

[^a] 匹配除了a以外的任意字元

'''reg =

"\w"

s = re.

findall

(reg,reg_string)

print

(s)#限定符

'''* 重複零次或多次

+ 重複1次或多次

? 重複零次或一次

重複n次

重複n次到更多次數

重複n到m次

'''reg_string =

"hello6232pyeh@qwhg.@!hellohh"

reg =

"\d"#理解為找到長度為4的數字存於列表的乙個元素中

result = re.

findall

(reg,reg_string)

print

(result)

reg =

"[0-9a-z]"#匹配範圍及長度

result = re.

findall

(reg,reg_string)

print

(result)

#練習ip =

"this is ip:192.168.1.123 :172.138.2.15"

reg =

"\d.\d+.\d+.\d+"

result = re.

findall

(reg,ip)

print

(result)

#search

ip =

"this is ip:192.168.1.123 :172.138.2.15"

reg =

"(\d.)\d"#改規則下使用findall,只找到重複為1次的

result = re.

search

(reg,ip)#返回乙個陣列型別

(list)

print

(result[0]

)'''

search 和 findall

search只匹配第乙個

findall匹配所有

'''#組匹配

s1="this is my phone :13888888888 and this is my postcode :012345"

reg1 =

"this is my phone :(\d) and this is my postcode :(\d)"

result = re.

search

(reg1 ,s1)

print

(result)

result = re.

search

(reg1 ,s1)

.group(0

)print

(result)

result = re.

search

(reg1 ,s1)

.group(1

)print

(result)

result = re.

search

(reg1 ,s1)

.group(2

)print

(result)

reg_string =

"hellosdawedhello"

reg =

"hello"

result = re.

match

(reg,reg_string)

.group()

#match只匹配開頭,開頭不是hello則返回錯誤

print

(result)

reg_string =

"hellosdawedhello"

reg =

"hello"

result = re.

match

(reg,reg_string,re.i)

#match只匹配開頭,re.

i:忽略大小寫

print

(result[0]

)result = re.

match

(reg,reg_string,re.i)

.group()

#match只匹配開頭,re.

i:忽略大小寫

print

(result)

#貪婪與非貪婪

'''貪婪:盡可能多的匹配

非貪婪:盡可能少的匹配

非貪婪符號:? 用在*

+?後邊,要求正規表示式匹配盡可能少

* 重複零次或多次

+ 重複1次或多次

? 重複零次或一次

*? 重複零次

+? 重複1次

?? 重複零次

'''#貪婪

reg_string =

"pythonnnnsdsapythonsdsa1112"

reg =

"python+"

result = re.

findall

(reg,reg_string)

print

(result)

#非貪婪

reg =

"python+?"

result = re.

findall

(reg,reg_string)

print

(result)

reg =

"python*?"

result = re.

findall

(reg,reg_string)

print

(result)

reg =

"python??"

result = re.

findall

(reg,reg_string)

print

(result)

#手機號碼驗證

'''移動:139

138137

151聯通:130

131電信:189

180'''

def checkcellphone

(cellphone)

: regex =

"^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d$"

result = re.

findall

(regex,cellphone)

if result:

print

("success"

)return true

else

:print

("fail"

)return false

cellphone =

"13113114251"

print

(checkcellphone

(cellphone)

)

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 表示替換所有的匹...