Python正則表示式的簡單應用和示例演示
前一陣子小編給大家連續分享了十篇關於Python正則表示式基礎的文章,感興趣的小夥伴可以點選連結進去檢視。今天小編給大家分享的是Python正則表示式的簡單應用和示例演示,將前面學習的Python正則表示式做一個概括。
下面的栗子是用於提取高考日期,一般來說,我們填寫日期都會寫2018年6月7日,但是也有很多人會寫成2018/6/7、2018-6-7、2018-06-07等,還有的人可能會寫為2018-06或者2018年6月。總之對日期的寫法五花八門,那麼我們現在需要寫一個正則表示式來統一匹配這麼多的情況,應該如何來處理呢?具體的教程如下所示。
1、首先我們先寫個簡單的正則表示式,然後一步步經過測試,慢慢達到匹配的效果。
這個正則表示式比較複雜,一下子可能看不懂,小編帶大家一層一層的進行理解。
2、我們從左到右對正則表示式進行分析,首先“.*”代表的是任意字元出現任意多次,對應原始字元中的“XXX”;“高考時間是”沒有什麼特別的,就是對應原始字串中的“高考時間是”。
3、接下來是“d{4}”代表的是連續出現4個數字,對應原始字串中的年份“2018”;“[年/-]”表示取“年”、“/”、“-”中的任意一個字元,對應原始字串中年份“2018”之後所連線的下一個字元。
4、繼續往後是“d{1,2}”代表的是連續出現1個到2個數字,對應原始字串中的月份“6”或者“06”;“[月/-]”表示取“月”、“/”、“-”中的任意一個字元,對應原始字串中月份“6”或者“06”之後所連線的下一個字元,同年份的理解如出一轍。
5、接下來就複雜一些了,其中“d{1,2}”的理解同月份的理解一致,關鍵是關於“日”的提取主要需要注意有的字串有日期,有的字串並沒有日期,所以需要特殊字元“|”來表示“或”的關係,並且用特殊字元“$”來表示結束。
6、理解了上述關係之後,接下來依次驗證六個原始字串,看看是否能匹配成功。下圖是原始字串string2的匹配情況。
發現可以匹配得上。
7、下圖是原始字串string3的匹配情況。
發現可以匹配得上。
8、下圖是原始字串string4的匹配情況。
發現可以匹配得上。
9、下圖是原始字串string5的匹配情況。
發現這種模式並不能匹配上,這是什麼原因呢?
10、原因是月份“d{1,2}”後面限定要跟“[月/-]”,而原始字串string5的時間為“2018-06”,其後面沒有任何的字元就結束了,也匹配模式搭配不上,因此在這裡需要改進一下。
需要利用特殊字元“|”和特殊字元“$”,做一個“或”的選擇,如上圖所示,之後就可以匹配成功了。
當然也可以直接把“[月/-]”一起加入到第二個括號裡,如下圖所示,這種方式更為簡便。
11、下圖是原始字串string6的匹配情況。
可以看到此時可以成功匹配。
經過測試可以發現,此時改進後的字串對6種不同日期的字串都可以成功匹配。小夥伴們,有沒有感受到正則表示式的魔力呢?