您好,登錄后才能下訂單哦!
前一陣子小編給大家連續(xù)分享了十篇關(guān)于Python正則表達(dá)式基礎(chǔ)的文章,感興趣的小伙伴可以點(diǎn)擊鏈接進(jìn)去查看。今天小編給大家分享的是Python正則表達(dá)式的簡單應(yīng)用和示例演示,將前面學(xué)習(xí)的Python正則表達(dá)式做一個(gè)概括。
下面的栗子是用于提取高考日期,一般來說,我們填寫日期都會(huì)寫2018年6月7日,但是也有很多人會(huì)寫成2018/6/7、2018-6-7、2018-06-07等,還有的人可能會(huì)寫為2018-06或者2018年6月??傊畬?duì)日期的寫法五花八門,那么我們現(xiàn)在需要寫一個(gè)正則表達(dá)式來統(tǒng)一匹配這么多的情況,應(yīng)該如何來處理呢?具體的教程如下所示。
1、首先我們先寫個(gè)簡單的正則表達(dá)式,然后一步步經(jīng)過測(cè)試,慢慢達(dá)到匹配的效果。
這個(gè)正則表達(dá)式比較復(fù)雜,一下子可能看不懂,小編帶大家一層一層的進(jìn)行理解。
2、我們從左到右對(duì)正則表達(dá)式進(jìn)行分析,首先“.*”代表的是任意字符出現(xiàn)任意多次,對(duì)應(yīng)原始字符中的“XXX”;“高考時(shí)間是”沒有什么特別的,就是對(duì)應(yīng)原始字符串中的“高考時(shí)間是”。
3、接下來是“d{4}”代表的是連續(xù)出現(xiàn)4個(gè)數(shù)字,對(duì)應(yīng)原始字符串中的年份“2018”;“[年/-]”表示取“年”、“/”、“-”中的任意一個(gè)字符,對(duì)應(yīng)原始字符串中年份“2018”之后所連接的下一個(gè)字符。
4、繼續(xù)往后是“d{1,2}”代表的是連續(xù)出現(xiàn)1個(gè)到2個(gè)數(shù)字,對(duì)應(yīng)原始字符串中的月份“6”或者“06”;“[月/-]”表示取“月”、“/”、“-”中的任意一個(gè)字符,對(duì)應(yīng)原始字符串中月份“6”或者“06”之后所連接的下一個(gè)字符,同年份的理解如出一轍。
5、接下來就復(fù)雜一些了,其中“d{1,2}”的理解同月份的理解一致,關(guān)鍵是關(guān)于“日”的提取主要需要注意有的字符串有日期,有的字符串并沒有日期,所以需要特殊字符“|”來表示“或”的關(guān)系,并且用特殊字符“$”來表示結(jié)束。
6、理解了上述關(guān)系之后,接下來依次驗(yàn)證六個(gè)原始字符串,看看是否能匹配成功。下圖是原始字符串string2的匹配情況。
發(fā)現(xiàn)可以匹配得上。
7、下圖是原始字符串string3的匹配情況。
發(fā)現(xiàn)可以匹配得上。
8、下圖是原始字符串string4的匹配情況。
發(fā)現(xiàn)可以匹配得上。
9、下圖是原始字符串string5的匹配情況。
發(fā)現(xiàn)這種模式并不能匹配上,這是什么原因呢?
10、原因是月份“d{1,2}”后面限定要跟“[月/-]”,而原始字符串string5的時(shí)間為“2018-06”,其后面沒有任何的字符就結(jié)束了,也匹配模式搭配不上,因此在這里需要改進(jìn)一下。
需要利用特殊字符“|”和特殊字符“$”,做一個(gè)“或”的選擇,如上圖所示,之后就可以匹配成功了。
當(dāng)然也可以直接把“[月/-]”一起加入到第二個(gè)括號(hào)里,如下圖所示,這種方式更為簡便。
11、下圖是原始字符串string6的匹配情況。
可以看到此時(shí)可以成功匹配。
經(jīng)過測(cè)試可以發(fā)現(xiàn),此時(shí)改進(jìn)后的字符串對(duì)6種不同日期的字符串都可以成功匹配。小伙伴們,有沒有感受到正則表達(dá)式的魔力呢?
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。