re模組
匯入re模組
import re
match方法
result = re.match(正規表示式,要匹配的字串)
result.group()
字元 功能
.匹配任意1個字元(除了\n)
[ ]匹配[ ]中列舉的字元
\d匹配數字,即0-9
\d匹配非數字,即不是數字
\s匹配空白,即 空格,tab鍵
\s匹配非空白
\w匹配單詞字元,即a-z、a-z、0-9、_
\w匹配非單詞字元
示例1字元 .:可以匹配容易字元(除了\n)
ret = re.match(「t.o」,「tio」)
print(ret.group())
ret = re.match(「t.o」,「two」)
print(ret.group())
執行結果
tiotwo
示例2字元 [ ]:匹配[ ]例舉的字元
import re
et = re.match("[hh]",「hello python」)
print(et.group())
aret = re.match("[hh]",「hello python」)
print(aret.group())
eret = re.match("[hh]ello python",「hello python」)
print(eret.group())
執行結果
hello python
hello python
hello python
示例3字元\d:匹配數字0-9
ret = re.match(「嫦娥1號」,「嫦娥1號發射成功」)
print(ret.group())
ret = re.match(「嫦娥\d號」,「嫦娥2號發射成功」)
print(ret.group())
執行結果
嫦娥1號,嫦娥1號發射成功
嫦娥2號,嫦娥2號發射成功
示例4:
import re
ret = re.match("[a-za-z0-9_]",「12a3g45678」)
print(ret.group())
ret = re.match("[a-za-z0-9_]",「1ad12f23s34455ff66」)
print(ret.group())
執行結果:
12a3g4
1ad12f23s34455ff66
字元功能
*匹配前乙個字元出現0次或者無限次,即可有可無
+匹配前乙個字元出現1次或者無限次,即至少有1次
?匹配前乙個字元出現1次或者0次,即要麼有1次,要麼沒有
匹配前乙個字元出現m次
匹配前乙個字元出現從m到n次
示例1** : 匹配前乙個字元出現0次或者無限次,可有可無*
ret = re.match("[a-z][a-z]*",「aabcdef」)
print(ret.group())
執行結果
aabcdef
示例2字元+:匹配前乙個字元出現1次或者無限次,即至少有1次
import re
names = [「name1」, 「_name」, 「2_name」, 「name」]
for name in names:
ret = re.match("[a-za-z_]+[\w]*",name)
if ret:
print(「變數名 %s 符合要求」 % ret.group())
else:
print(「變數名 %s 非法」 % name)
執行結果
變數名 name1 符合要求
變數名 _name 符合要求
變數名 2_name 非法
變數名 name 符合要求
示例3字元?:匹配前乙個字元出現1次或者0次,即要麼有1次,要麼沒有
import re
ret = re.match("[1-9]?[0-9]",「7」)
print(ret.group())
ret = re.match("[1-9]?\d",「33」)
print(ret.group())
ret = re.match("[1-9]?\d",「09」)
print(ret.group())
示例4字元:匹配前乙個字元出現m次
import re
ret = re.match("[a-za-z0-9_]",「12a3g45678」)
print(ret.group())
ret = re.match("[a-za-z0-9_]",「1ad12f23s34455ff66」)
print(ret.group())
字元功能
^匹配字串開頭
$匹配字串結尾
案例1^: 匹配字串開頭
案例2$: 匹配字串結尾
import re
email_list = [「[email protected]」, 「[email protected]」, "[email protected]"]
for email in email_list:
ret = re.match("[\w]@163.com$", email)
if ret:
print("%s 是符合規定的郵件位址,匹配後的結果是:%s" % (email, ret.group()))
else:
print("%s 不符合要求" % email)
執行結果:
[email protected] 是符合規定的郵件位址,匹配後的結果是:[email protected]
[email protected] 不符合要求
[email protected] 不符合要求12
3**^: 匹配字串開頭 **
import re
email_list = [「[email protected]」, 「[email protected]」, "[email protected]"]
for email in email_list:
ret =re.match(「[email protected]」, email)
if ret:
print("%s 是符合規定的郵件位址,匹配後的結果是:%s" % (email, ret.group()))
else:
print("%s 不符合要求" % email)
執行結果
[email protected] 是符合規定的郵件位址,匹配後的結果是:[email protected]
[email protected] 是符合規定的郵件位址,匹配後的結果是:[email protected]
[email protected] 不符合要求
ret = re.search(r"\d+", 「閱讀次數為 9999」)
ret.group()
ret = re.findall(r"\d+", 「python = 9999, c = 7890, c++ = 12345」)
print(ret)
功能:將匹配到的閱讀次數加1
方法一import re
ret = re.sub(r"\d+", 『998』, 「python = 997」)
print(ret)
import re
方法二def add(temp):
strnum = temp.group()
num = int(strnum) + 1
return str(num)
ret = re.sub(r"\d+", add, 「python = 997」)
print(ret)
ret = re.sub(r"\d+", add, 「python = 99」)
print(ret)
python正規表示式(二)
re模組的用法 1 re.s可以匹配轉義符 re.findall k.n darken dark nn 只輸出第乙個darken中的ken re.findall k.n darken dark nn re.s 不僅輸出darken中的ken,還輸出了dak nn中的k nn 2 re.m匹配多行 r...
Python 正規表示式(二)
這次的正規表示式學習談一談選擇符和子模式 可選項和重複子模式 在字串的各個字元都不相同的請胯下,字符集是比較好用的,但是如果只想匹配特定的字串,那麼字符集就不合適了,這裡就可以使用管道符號 比如我們只想匹配字串 python 和 perl 我們可以使用正則 python perl 但是有時候我們不需...
python正規表示式(二)
python的正規表示式支援大量的擴充套件符號 通過使用 ilmsux 系列,使用者可以在正規表示式裡面指定乙個或者多個標記,而不是通過compile 或者其他re模組函式。下面使用re.i ignorecase的示例,最後乙個示例在re.m multiline實現多行混合。import re re...