python筆記25(正則表達式課程一)

来源:https://www.cnblogs.com/cuiyongchao007/archive/2020/03/06/12424210.html
-Advertisement-
Play Games

今日內容 1、mro演算法和super super()表示執行父類的方法。 2、正則表達式和re模塊 1. re模塊本身只是用來操作正則表達式。 (1)正則表達式 匹配字元串 表單驗證 爬蟲 (4)正則表達式規則(元字元,量詞) 3、量詞 ...


今日內容

1、mro演算法和super

super()表示執行父類的方法。

2、正則表達式和re模塊

  1. re模塊本身只是用來操作正則表達式。

(1)正則表達式

  • 匹配字元串
- 一個人的電話號碼
- 一個人的身份證號
- 一臺機器的ip地址
  • 表單驗證
驗證用戶輸入的信息是否合法。
如:11位全數字1開頭,第二個數字是3-9數字。
  • 爬蟲
從網頁源碼中獲取一些鏈接、重要的數據。

(4)正則表達式規則(元字元,量詞)

http://tool.chinaz.com/regex/,正則表達式測試。
第一條規則:本身是哪個字元,就匹配字元串中哪個字元。
第二條規則:字元組【字元1字元2】,一個字元組就是代表匹配一個字元,只要這個字元出現在字元組裡,那麼就說明這個字元能匹配。
            字元組中還可以使用範圍,所有的範圍都必須遵循ascii從小到大。
            【0-9】,【a-z】,[A-Z],[A-z],[a-zA-Z]#匹配所有大小寫,[0-9X]#匹配0-9和x。
[0-9],等價\d,\是轉義符,轉義符轉義了d,讓d能夠匹配所有0-9之間的數字。
\w:表示大小寫字母,數字,下劃線
\s:表示空白,空格,換行符,製表符
\t:匹配製表符
\n:匹配換行符
\D:表示所有非數字
\W:表示除數字、字母、下劃線之外的所有字元
\S:表示非空白
#\d(digit),\w(word),\s(space),\t(table),\n(next)
#.(點)表示除了換行符之外任意內容。
#[],[^],尖角號表示非。
#[]字元組:只要在中括弧內的所有字元都是符合規則的字元。
#[^]非字元組:只要在中括弧內的所有字元都是不符合規則的字元
#[],[^],^表示一個字元的開始;$表示一個字元的結束。
#^xxx$:匹配xxx內容
#| :表示或,註意兩個規則有重疊部分,總是長的在前面,短的在後面。
#()表示組,將一部分正則歸為一組。|這個符合的作用域就縮小了。
#(),|或的符號,匹配兩邊所有的內容。如果限制匹配範圍,使用括弧()。
#匹配點的時候,需要使用\轉義符號,取消.點的特殊含義(除換行符之外所有內容)
#【\d】,【0-9】,\d,沒區別,都是匹配一位數字。
#[\d\D],[\w\W],[\S\s]匹配所有一切字元

3、量詞

{n}:表示出現n次;1[3-9]\d{9}
{n,}表示出現至少n次
{n,m}表示出現n-m次
?:表示匹配0次或者1次
+:表示1次或者多次
*:表示匹配0次或者多次
#匹配兩個整數:\d{2}
#匹配兩位小數:\n+\.\d{2}
#匹配一個整數或者小數:
方法1:\d+\.\d+|\d+;
方法2:\d+\.?\d* 
方法3:\d+(\.\d+)?
#表示可有可無的使用(?),比如此處的小數點。
#表示可有可無(*),但是可以有多個,比如小數點後n位。


預設貪婪匹配,總是會在符號量詞條件的範圍內儘量多匹配。
#\d{7,12}
# <html>adljdkjsljdlj</html>lhaljaln
#<.+>,匹配上述的內容為:<html>adljdkjsljdlj</html>,解釋:回溯演算法,匹配第一個<,.+匹配任意內容,到最後,從最後向前回溯至倒數第一個>。這裡面體現了py的貪婪匹配原則。


非貪婪匹配:惰性匹配
總是匹配符合條件範圍內儘量小的字元串。?,問好
如:\d{2,3}?,這裡就是取兩個數字。
如:\d+?3,這裡遇到3匹配。

元字元 量詞 ? x(任意內容)
表示按照元字元規則在量詞範圍內匹配,一旦遇到x就停止。
常用:.*?x,匹配任意的內容,任意多次,遇到x就停止。

#元字元
#元字元量詞
#元字元量詞?,非貪婪
#\d+?x,.*?x#(這裡的+,*,表示量詞)


案例:
# 身份證號
# 15位  全數字 首位不為0
# 18位  前17位全數字 首位不為0  最後一位可能是x和數字
[1-9](\d{16}(\d|x)|\d{14})
[1-9](\d{16}[\dx]|\d{14})
[1-9]\d{14}(\d{2}[\dx])?

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實例 在數組中讀取元素: citrus 結果輸出: 定義和用法 slice() 方法可從已有的數組中返回選定的元素。 slice()方法可提取字元串的某個部分,並以新的字元串返回被提取的部分。 註意: slice() 方法不會改變原始數組。 瀏覽器支持 所有主要瀏覽器都支持slice()。 語法 a ...
  • 實例 數組中添加新元素: fruits 結果輸出: 定義和用法 push() 方法可向數組的末尾添加一個或多個元素,並返回新的長度。 註意: 新元素將添加在數組的末尾。 註意: 此方法改變數組的長度。 提示: 在數組起始位置添加元素請使用 "unshift()" 方法。 瀏覽器支持 所有主要瀏覽器都 ...
  • 定義和用法 pop() 方法用於刪除並返回數組的最後一個元素。 語法 ~~~ arrayObject.pop() ~~~ 返回值 arrayObject 的最後一個元素。 說明 pop() 方法將刪除 arrayObject 的最後一個元素,把數組長度減 1,並且返回它刪除的元素的值。如果數組已經為 ...
  • 定義和用法 join() 方法用於把數組中的所有元素放入一個字元串。 元素是通過指定的分隔符進行分隔的。 語法 ~~~ arrayObject.join(separator) ~~~ | 參數 | 描述 | | | | | separator | 可選。指定要使用的分隔符。如果省略該參數,則使用逗號 ...
  • `hasOwnProperty() true false`。 該方法屬於 對象,由於所有的對象都"繼承"了Object的對象實例,因此幾乎所有的實例對象都可以使用該方法。 IE 5.5+、FireFox、Chrome、Safari、Opera等主流瀏覽器均支持該函數。 語法 JavaScript: ...
  • google模式下: ie模式下: 火狐模式下: FILTER(ie模式);background: moz linear gradient(火狐模式);background: webkit gradient(谷歌模式)。 以上是為了區別不同瀏覽器的不同效果,我把色碼區別開了。為了相容所有瀏覽器的相同 ...
  • 目 錄 1. 概述... 2 2. 原有結構(帶kafka)... 2 3. 改造後的結構(去掉kafka)... 3 4. 對比... 4 1. 概述 我們主要面向鋼鐵行業工業互聯網公有雲和私有去建設,偏向PAAS層和SAAS層應用,框架是支撐這個體系建設。現在我們的公有雲的IAAS資源層使用的是 ...
  • 一、內容回顧 面向對象 單例模塊 單例模塊:設計模式 單例的應用場景 logging模塊 記錄日誌的 記錄錯誤、操作日誌 給程式員看的:①統計使用;②用來做故障排除的(debug);③記錄錯誤,完成優化代碼的。 logging.basicconig:①使用方便,②不能實現,編碼問題;不能同時向文件和 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...