日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
由淺到深解讀Python正則表達(dá)式

對(duì)于許多需要處理文本來說的技術(shù)工程師,必須對(duì)Python正則表達(dá)式有一個(gè)全面深入的認(rèn)識(shí),不但要深入理解下什么是Python正則表達(dá)式,還要對(duì)Python正則表達(dá)式字符有所認(rèn)識(shí)。

我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、巴彥淖爾ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的巴彥淖爾網(wǎng)站制作公司

此外,還有少數(shù)字符比較特殊,它們和自身并不匹配,而是跟其字面值之外的一些特殊的東西匹配,這些東西可能是字符集、重復(fù)次數(shù)或者位置等。常用的元字符包括:
. ^ $ * + ? { } [ ] \ | ( )

對(duì)于這些特殊字符,本文會(huì)陸續(xù)加以介紹。不過我們這里先了解一下用來匹配字符的元字符。首先,句點(diǎn)“.”這個(gè)元字符通常用于想匹配“任何字符”的地方:一般情況下,它匹配除換行字符之外的任何字符;但是在alternate模式(re.DOTALL)下,它匹配真正意義上的任何字符,包括換行字符在內(nèi)。

我們接下來考察的元字符是“[”和“]”。它們常配對(duì)用來指定想匹配的一個(gè)字符集合,也就是說該集合內(nèi)的任何一個(gè)元素都能滿足我們的要求。集合內(nèi)的字符可以單個(gè)列出,如果這些字符是連續(xù)的也可以用“-”號(hào)分隔的兩個(gè)給定字符來指定一個(gè)字符范圍。

例如,[abc]將匹配“a”、“b”或“c”中的任意一個(gè)字符;當(dāng)然也可以用區(qū)間[a-c]來表示同一字符集,這兩者表示方法是等效的。如果想匹配字符串中的所有元音字母,則可使用下列代碼:

 
 
 
  1. import re  
  2. def re_show(pat, s):  
  3.     print re.compile(pat, re.M).sub("{\g<0>}", s.rstrip()),'\n'  
  4.  
  5. s = '''In company or association with respect to place or time;  
  6.         as, to live together in one house; to live together in the  
  7.         same age; they walked together to the town.'''  
  8. re_show(r"[aeiou]",s) 

運(yùn)行結(jié)果如下所示:

 
 
 
  1. In c{o}mp{a}ny {o}r {a}ss{o}c{i}{a}t{i}{o}n w{i}th r{e}sp{e}ct t{o} pl{a}c{e} {o}r t{i}m{e};  
  2.  
  3.   {a}s, t{o} l{i}v{e} t{o}g{e}th{e}r {i}n {o}n{e} h{o}{u}s{e}; t{o} l{i}v{e} t{o}g{e}th{e}r {i}n th{e}  
  4.  
  5.   s{a}m{e} {a}g{e}; th{e}y w{a}lk{e}d t{o}g{e}th{e}r t{o} th{e} t{o}wn. 

對(duì)于字符集合有一點(diǎn)需要特別注意,就是元字符在方括號(hào)中會(huì)“降級(jí)”為普通字符。例如,[a.]將匹配字符“a”或“.”中的任意一個(gè);前面說過“.”通常用作元字符。但在字符集合里,其特殊性將被剝奪,恢復(fù)成普通字符。這一點(diǎn)讀者可以自己改動(dòng)一下上面的代碼來實(shí)驗(yàn)一下。

有時(shí)需要查找不屬于某個(gè)字符集合的字符。比如想查找除了數(shù)字6以外,其它任意字符都行的情況,這時(shí)需要用到反義:其做法是把元字符“^”作為集合的***字符,例如,[^5] 將匹配除“6”之外的任意字符。

反斜杠“\”是一種非常重要的元字符。我們知道在Python的字符串中,反斜杠也是作為一種特殊字符(或轉(zhuǎn)義字符)使用,后面可以跟不同的字符以表示不同特殊意義;它也可以用于取消所有的元字符,這樣你就可以在模式中匹配它們了。舉個(gè)例子,如果你需要匹配字符“\”,你可以在其之前用反斜杠來取消它們的特殊意義:\\。#t#

◆\d 匹配任何十進(jìn)制數(shù);它等價(jià)于字符集合[0-9]。
◆\D 匹配任何非數(shù)字字符;它等價(jià)于字符集合[^0-9]。
◆\s 匹配任何空白字符;它等價(jià)于字符集合[ \t\n\r\f\v]。
◆\S 匹配任何非空白字符;它等價(jià)于字符集合[^ \t\n\r\f\v]。
◆\w 匹配任何字母數(shù)字下劃線字符;它等價(jià)于字符集合[a-zA-Z0-9_]。
◆\W 匹配任何非字母數(shù)字下劃線字符;它等價(jià)于字符集合[^a-zA-Z0-9_]。

我們已經(jīng)講過為單個(gè)字符指定重復(fù)次數(shù)的方法——直接在字符后面加上限定符就行了;現(xiàn)在我們?cè)賮韺W(xué)習(xí)一下重復(fù)多個(gè)字符的八法:你可以用小括號(hào)來指定子表達(dá)式(也叫做分組),然后你就可以指定這個(gè)子表達(dá)式的重復(fù)次數(shù)了,你也可以對(duì)子表達(dá)式進(jìn)行其它一些操作。

我們知道,IP地址是由點(diǎn)號(hào)分隔的四個(gè)數(shù)字,并且每個(gè)數(shù)字都不能大于255。(\d{1,3}\.){3}\d{1,3}是一個(gè)簡(jiǎn)單的IP地址匹配表達(dá)式,其中:\d{1,3}匹配1到3位的數(shù)字,(\d{1,3}\.){3}匹配三位數(shù)字加上一個(gè)英文句號(hào)(這個(gè)整體也就是這個(gè)分組)重復(fù)3次,***再加上一個(gè)一到三位的數(shù)字(\d{1,3})。

然而,它也將匹配256.300.888.999這種不可能存在的IP地址。如果能使用算術(shù)比較的話,或許能簡(jiǎn)單地解決這個(gè)問題,但是正則表達(dá)式中并不提供關(guān)于數(shù)學(xué)的任何功能,所以只能使用冗長(zhǎng)的分組。

選擇Python正則表達(dá)式和字符集合來描述一個(gè)正確的IP地址:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)。理解這個(gè)表達(dá)式的關(guān)鍵是理解2[0-4]\d|25[0-5]|[01]?\d\d?,經(jīng)過上面的介紹,相信讀者能分析得出來它的意義。


分享名稱:由淺到深解讀Python正則表達(dá)式
網(wǎng)站地址:http://www.5511xx.com/article/cdsoesp.html