真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在Python中對(duì)單個(gè)字符使用正則表達(dá)式-創(chuàng)新互聯(lián)

本篇文章給大家分享的是有關(guān)怎么在Python中對(duì)單個(gè)字符使用正則表達(dá)式,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

“專(zhuān)業(yè)、務(wù)實(shí)、高效、創(chuàng)新、把客戶(hù)的事當(dāng)成自己的事”是我們每一個(gè)人一直以來(lái)堅(jiān)持追求的企業(yè)文化。 成都創(chuàng)新互聯(lián)是您可以信賴(lài)的網(wǎng)站建設(shè)服務(wù)商、專(zhuān)業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專(zhuān)注于網(wǎng)站制作、網(wǎng)站建設(shè)、軟件開(kāi)發(fā)、設(shè)計(jì)服務(wù)業(yè)務(wù)。我們始終堅(jiān)持以客戶(hù)需求為導(dǎo)向,結(jié)合用戶(hù)體驗(yàn)與視覺(jué)傳達(dá),提供有針對(duì)性的項(xiàng)目解決方案,提供專(zhuān)業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場(chǎng),引領(lǐng)市場(chǎng)!

1.re.match函數(shù)


   python用re.match函數(shù)從字符串的起始位置匹配一個(gè)模式,若字符串匹配正則表達(dá)式,則match方法返回匹配對(duì)象(Match Object),否則返回None(注意不是空字符串"")。匹配對(duì)象Macth Object具有g(shù)roup方法,用來(lái)返回字符串的匹配部分。

   函數(shù)語(yǔ)法:re.match(pattern, string, flags) ;pattern是正則表達(dá)式,string需要匹配的字符串,flags為可選參數(shù)修飾符。

# 導(dǎo)入re模塊,注意match函數(shù)是從起始位置匹配的。如果起始位置匹配失敗,則返回None
import re
#match()函數(shù)適合匹配是否以xxxx開(kāi)始的字符串,因?yàn)槠鋸念^開(kāi)始匹配的
ret = re.match("abc","aBCabc",re.I) #可選參數(shù)re.I表示忽略大小寫(xiě),后續(xù)詳細(xì)解釋。
print(ret.group()) #aBC
ret1 = re.match("abc","aBCabc")
print(ret1.group()) # 'NoneType' object has no attribute 'group'

正則表達(dá)式可以包含一些可選標(biāo)志修飾符來(lái)控制匹配的模式。修飾符被指定為一個(gè)可選的標(biāo)志。多個(gè)標(biāo)志可以通過(guò)按位 OR(|) 它們來(lái)指定。如 re.I | re.M 被設(shè)置成 I 和 M 標(biāo)志:

修飾符描述
re.I使匹配對(duì)大小寫(xiě)不敏感
re.L做本地化識(shí)別(locale-aware)匹配
re.M多行匹配,影響 ^ 和 $
re.S使 . 匹配包括換行在內(nèi)的所有字符
re.U根據(jù)Unicode字符集解析字符。這個(gè)標(biāo)志影響 \w, \W, \b, \B.
re.X該標(biāo)志通過(guò)給予你更靈活的格式以便你將正則表達(dá)式寫(xiě)得更易于理解。

2.正則表達(dá)式的語(yǔ)法

2.1正則表達(dá)式對(duì)字符(單個(gè)字符)的表示

字符功能
.匹配任意1個(gè)字符(除了\n),注意因?yàn)?表示任意一個(gè)字符,所以如果匹配‘.'則需要用轉(zhuǎn)義字符\.來(lái)表示
[ ]匹配[ ]中列舉的字符,如果[a-zA-Z0-9],[a-zA-Z]表示所有字母和數(shù)字,后者表示所有字母,注意中間沒(méi)有空格符號(hào)。
\d匹配數(shù)字,即0-9
\D匹配非數(shù)字,即不是數(shù)字
\s匹配空白,即 空格,tab鍵
\S匹配非空白
\w匹配單詞字符,即a-z、A-Z、0-9、_
\W匹配非單詞字符
# 導(dǎo)入re模塊
import re
#1.測(cè)試.的使用,匹配任意字符開(kāi)始的字符串
str='abc'
ret =re.match("..",str)
print(ret.group()) #ab.用兩個(gè)..就表示只要str字符串開(kāi)頭是兩個(gè)字符即可。
ret1 = re.match("....",str) #這種情況則會(huì)報(bào)錯(cuò),因?yàn)閟tr只有三個(gè)字符。
 
#2.匹配[]范圍內(nèi)的任意一個(gè)字符開(kāi)頭的字符串
str1 = "abcABC*?//"
str2 = "3afasdlfadsf"
ret2 = re.match("[a-z]",str1).group() #a
ret3 = re.match("[123456]",str2).group() #3,[1-6]等價(jià)[123456]
 
#3./d的使用,表示匹配任意一個(gè)數(shù)字
str3 = "第5名是我"
ret4 = re.match("第\d名",str3).group()
print(ret4) #第5名
 
ret4 = re.match("第[0-9]名",str3) #同樣是表示0-9任意一個(gè),[0-9]和\d效果一樣
print(ret4.group()) #第5名

 總結(jié):注意上面對(duì)字符的匹配都是表示一個(gè)任意字符,或者某個(gè)范圍內(nèi)的任意一個(gè)字符,屬于單個(gè)字符匹配。而實(shí)際開(kāi)發(fā)中肯定都是用一個(gè)子串(多個(gè)字符)去匹配整個(gè)字符串。那么如何表示呢,請(qǐng)繼續(xù)下去。

2.2正則表達(dá)式匹配多個(gè)字符:數(shù)量的表示

匹配多個(gè)字符的相關(guān)格式,其實(shí)就是單個(gè)字符加上數(shù)量。注意下面數(shù)量的匹配都是針對(duì)前一個(gè)字符。

字符功能
*匹配前一個(gè)字符出現(xiàn)0次或者無(wú)限次,即可有可無(wú)
+匹配前一個(gè)字符出現(xiàn)1次或者無(wú)限次,即至少有1次
?匹配前一個(gè)字符出現(xiàn)1次或者0次,即要么有1次,要么沒(méi)有
{m}匹配前一個(gè)字符出現(xiàn)m次
{m,}匹配前一個(gè)字符至少出現(xiàn)m次
{m,n}匹配前一個(gè)字符出現(xiàn)從m到n次
# 導(dǎo)入re模塊
import re
 
#1.匹配第一個(gè)是大寫(xiě)字母,第二個(gè)小寫(xiě)字母,后面只要是小寫(xiě)字母即可。
ret = re.match("[A-Z][a-z]*","Aafngsdfgnlsdf1224343")
print(ret.group()) #Aafngsdfgnlsdf
ret1 = re.match("[A-Z][a-z]*","AaAaaa34bbb")
print(ret1.group()) #Aa ,因?yàn)楹竺娌皇切?xiě)字母所以沒(méi)匹配到。
 
#匹配下面字符串是否以字母或者下劃線開(kāi)頭
ret = re.match("[a-zA-Z_]+[\w_]*","name1") #解釋1:[a-zA-Z_]+字母下劃線至少出現(xiàn)一次
print(ret.group()) #name1
 
ret = re.match("[a-zA-Z_]+[\w_]*","_name") #解釋2:[\w_]*表示字母,數(shù)據(jù)下劃線出現(xiàn)任意次
print(ret.group()) #_name
 
ret = re.match("[a-zA-Z_]+[\w_]*","2_name")
#print(ret.group()) #報(bào)錯(cuò),因?yàn)槠ヅ洳簧?,返回None.
 
 
#3.匹配前面字符出現(xiàn)0次或者1次使用?
ret = re.match("[1-9]?[0-9]","7")
print(ret.group()) #7
 
ret = re.match("[1-9]?[0-9]","33")
print(ret.group()) #33
 
ret = re.match("[1-9]?[0-9]","09")
print(ret.group()) #0
 
#4.前面字符出現(xiàn)n此,或者m-n范圍內(nèi)的任意次
ret = re.match("[a-zA-Z0-9_]{6}","dsa2A9nfdsf")
print(ret.group()) #dsa2A9,匹配前6位是數(shù)字字符下劃線即可
 
ret = re.match("[a-zA-Z0-9_]{3,8}","aSjsd239344")
ret1 = re.match("[a-zA-Z0-9_]{3,8}","aSjs")
print(ret1.group()) #aSjs,注意匹配前一個(gè)字符出現(xiàn)3-8次,只要這個(gè)范圍內(nèi)都算匹配成功,按實(shí)際匹配
print(ret.group()) #aSjsd239 匹配前一個(gè)字符出現(xiàn)3到8次
 
ret = re.match("[a-z0-9A-Z_]{3,}","a2")
print(ret.group()) #至少出現(xiàn)3次,所以如果只有兩個(gè)的話,返回None,調(diào)用報(bào)錯(cuò)。

總結(jié):?jiǎn)蝹€(gè)字符匹配,多個(gè)字符匹配上面都已經(jīng)演示過(guò)了,基本可以完成大多數(shù)字符串的匹配了。但是上面過(guò)于字符串的匹配都是從頭開(kāi)始匹配的,而實(shí)際開(kāi)發(fā)中可能是從字符串中間,后者結(jié)尾開(kāi)始匹配的。keep reading....

2.3.正則表達(dá)式:匹配邊界的問(wèn)題

字符功能
^匹配字符串開(kāi)頭
$匹配字符串結(jié)尾
\b

匹配一個(gè)單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

\B匹配非單詞邊界,'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
# 導(dǎo)入re模塊
import re
 
# 匹配以@qq.com郵箱結(jié)尾的郵箱地址
#1.不適用匹配字符串結(jié)尾的$來(lái)實(shí)現(xiàn),注意.要用轉(zhuǎn)義字符,一般郵箱的長(zhǎng)度都是4-30位
ret = re.match("[\w]{4,30}@qq\.com", "xiaoWang@qq.com")
print(ret.group()) #xiaoWang@qq.com
 
 
# 通過(guò)$來(lái)確定末尾,效率更高
ret = re.match("[\w]{4,30}@qq\.com$", "xiaoWang@qq.com")
print(ret.group()) #xiaoWang@qq.com
 
ret = re.match("[\w]{4,30}@qq\.com$", "xiaoWang@qq.com.cn")
#print(ret.group()) #報(bào)錯(cuò)

以上就是怎么在Python中對(duì)單個(gè)字符使用正則表達(dá)式,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前標(biāo)題:怎么在Python中對(duì)單個(gè)字符使用正則表達(dá)式-創(chuàng)新互聯(lián)
URL鏈接:http://weahome.cn/article/djghpi.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部