1. 程式人生 > >Python學習(四)正則表示式

Python學習(四)正則表示式

正則表示式

正則表示式:

正則表示式, 又稱正規表示式、正規表示法、正規表示式、規則表示式、常規表示法(英語: 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