#正規表示式是記錄文字規則的**
#是乙個特殊的字串行
#普通字元和元字元組成的。其實就是對元字元的學習
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 表示替換所有的匹...