Python學習(四)正則表示式
阿新 • • 發佈:2019-02-12
正則表示式
正則表示式:
正則表示式, 又稱正規表示式、正規表示法、正規表示式、規則表示式、常規表示法(英語: Regular Expression, 在程式碼中常簡寫為regex、 regexp或RE) , 是電腦科學的一個概念。 正則表示式使用單個字串來描述、 匹配一系列匹配某個句法規則的字串。 在很多文字編輯器裡, 正則表示式通常被用來檢索、 替換那些匹配某個模式的文字。
在Python中需要通過正則表示式對字串進行匹配的時候, 可以使使用一個模組, 名字為re
re模組的使用過程
# 匯入re模組
import re
# 使用match方法進行匹配操作
result = re.match(正則表示式,要匹配的字串)
# 如果上一步匹配到資料的話, 可以使用group方法來提取資料
result.group()
re.match是用來進行正則匹配檢查的方法, 若字串匹配正則表示式, 則match方法返回匹配物件(Match Object), 否則返回None(注意不是空字串”“) 。
匹配物件Macth Object具有group方法, 用來返回字串的匹配部分。
表示字元
字元 | 功能 |
---|---|
. | 匹配任意1個字元(除了\n) |
[ ] | 匹配[ ]中列舉的字元 |
\d | 匹配數字, 即0-9 |
\D | 匹配非數字, 即不是數字 |
\s | 匹配空白,即空格,tab鍵 |
\S | 匹配非空白 |
\w | 匹配單詞字元, 即a-z、A-Z、0-9、_ |
\W | 匹配非單詞字元 |
應用例項:
.的用法
import re
ret = re.match(".","a")
ret.group()
ret = re.match(".","b")
ret.group()
ret = re.match(".","M")
ret.group()
[ ]的用法
import re
# 如果hello的首字元小寫, 那麼正則表示式需要小寫的h
ret = re.match("h","hello Python")
ret.group()
# 如果hello的首字元大寫, 那麼正則表示式需要大寫的H
ret = re.match("H","Hello Python")
ret.group()
# 大小寫h都可以的情況
ret = re.match("[hH]","hello Python")
ret.group()
ret = re.match("[hH]","Hello Python")
ret.group()
# 匹配0到9第一種寫法
ret = re.match("[0123456789]","7Hello Python")
ret.group()
# 匹配0到9第二種寫法
ret = re.match("[0-9]","7Hello Python")
ret.group()
\d的用法
import re
# 普通的匹配⽅式
ret = re.match("嫦娥1號","嫦娥1號發射成功")
print ret.group()
# 使用\d進行匹配
ret = re.match("嫦娥\d號","嫦娥1號發射成功")
print ret.group()
表示字元
字元 | 功能 |
---|---|
* | 匹配前一個字元出現0次或者無限次,即可有可無 |
+ | 匹配前一個字元出現1次或者無限次, 即至少有1次 |
? | 匹配前一個字元出現1次或者0次,即要麼有1次,要麼沒有 |
{m} | 匹配前一個字元出現m次 |
{m,} | 匹配前一個字元至少出現m次 |
{m,n} | 匹配前一個字元出現從m到n次 |
應用例項:
*的用法
#匹配出,一個字串第一個字母為大寫字元, 後面都是小寫字母並且這些小寫字母可有可無
import re
ret = re.match("[A-Z][a-z]*","Mm")
ret.group()
ret = re.match("[A-Z][a-z]*","Aabcdef")
ret.group()
+的用法:
# 匹配出,變數名是否有效
import re
ret = re.match("[a-zA-Z_]+[\w_]*","name1")
ret.group()
ret = re.match("[a-zA-Z_]+[\w_]*","_name")
ret.group()
ret = re.match("[a-zA-Z_]+[\w_]*","2_name")
ret.group()
?的用法:
import re
#匹配出,0到99之間的數字
ret = re.match("[1-9]?[0-9]","7")
ret.group()
ret = re.match("[1-9]?[0-9]","33")
ret.group()
ret = re.match("[1-9]?[0-9]","09")
ret.group()
{m}的用法:
#匹配出, 8到20位的密碼,可以是大小寫英文字母、數字、下劃線
import re
ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678")
ret.group()
ret = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66")
ret.group()
先寫到這,明天繼續QAQ