Python學習筆記——正則表達式入門

来源:http://www.cnblogs.com/airzsblog/archive/2016/08/10/5756171.html
-Advertisement-
Play Games

# 本文對正則知識不做詳細解釋,僅作入門級的正則知識目錄。 正則表達式的強大早有耳聞,大一時參加一次選拔考試,題目就是用做個HTML解析器,正則的優勢表現得淋漓盡致。題外話不多講,直接上乾貨: 1. 元字元: 與之對應的還有反義字元,大部分為小寫字母變大寫,例如\D表示匹配非數字的字元。 2. 重覆 ...


# 本文對正則知識不做詳細解釋,僅作入門級的正則知識目錄。

 

  正則表達式的強大早有耳聞,大一時參加一次選拔考試,題目就是用做個HTML解析器,正則的優勢表現得淋漓盡致。題外話不多講,直接上乾貨:

1. 元字元:

   

  與之對應的還有反義字元,大部分為小寫字母變大寫,例如\D表示匹配非數字的字元。

2. 重覆(即匹配變長的字元串):

  元字元可匹配單一的字元類型,若想匹配長度未知或長度限定的字元串需要在後邊加上限定符。

  

3. 範圍與分組:

  有時元字元並不能滿足匹配字元的需求,這時就需要[]來圈定匹配範圍,例如要匹配一個只帶有a,s,d,f的單詞,可以用\b[asdf]\b;正則裡面還有小括弧用來表示分組,比如你想重覆某幾個字元,就可以使用分組,例如(\d.\d){1,3}表示匹配小括弧里的重覆內容一到三次。此外,小括弧還可以用來後向引用等,此處不記。

4. 零寬斷言:

  零寬斷言主要用來查找在某些斷言(指定內容)之前或之後的內容,例如(?=exp)匹配表達式exp前面出現的內容(不匹配exp),(?<=exp)匹配表達式exp後面出現的內容,還有負向零寬斷言等此處不記。

5. 貪婪與懶惰:

  當正則表達式中包含能接受重覆的限定符時,通常的行為是(在使整個表達式能得到匹配的前提下)匹配儘可能多的字元,即貪婪匹配。如表達式a.*b,搜索aabab的話,它會匹配整個字元串aabab。而懶惰匹配會匹配儘可能少的字元串,只需要在限定符後面加一個?,例如a.*?b會匹配aab(第一到第三個字元)和ab(第四到第五個字元)

6. Python的re模塊:

  python 提供re模塊,提供正則的所有功能。下麵只記兩個方法和一個註意的地方。

  6.1 match方法:

    match()方法判斷是否匹配,如果匹配成功,返回一個Match對象,否則返回None

1 >>> import re
2 >>> re.match(r'^\d{3}\-\d{3,8}$', '010-12345')
3 <_sre.SRE_Match object at 0x1026e18b8>
4 >>> re.match(r'^\d{3}\-\d{3,8}$', '010 12345')
5 >>>

    如果正則表達式中定義了組,就可以在Match對象上用group()方法提取出子串來。註意到group(0)永遠是原始字元串,group(1)group(2)……表示第1、2、……個子串。使用groups()方法還可以得到所有子串。

  6.2 split方法:

    split()方法可切分子串,如下:

1 >>> re.split(r'[\s\,\;]+', 'a,b;; c  d')
2 ['a', 'b', 'c', 'd']

  6.3 關於轉義字元:

    python轉義字元串也用\表示,所以正則表達式讀取時作為字元串出現時會被編譯器自動去掉轉移字元的\,正則使用時就會出錯,所以推薦使用python的 r 首碼。

ps:

  本文是對正則表達式的學習總結,大部分知識來源於網上。下麵給出兩個個人認為比較好的鏈接:

  1.http://www.jb51.net/tools/zhengze.html 對正則表達式介紹的比較詳細,個人認為要想深入學習正則表達式還是買本書比較好。

  2.http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832260566c26442c671fa489ebc6fe85badda25cd000 來自廖雪峰大神的教程,結合python一起講,只是稍微短了一點。

 


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

-Advertisement-
Play Games
更多相關文章
  • app讓個別界面橫屏,其他的為豎屏,解決如下 APP設置裡面,一定要設置可以旋轉的方向 appdelegate裡面重新系統方向代理 func application(application: UIApplication, supportedInterfaceOrientationsForWindow ...
  • 在Python shell中輸入import this就會在屏幕上列印出來Python的設計哲學,如下: 大概意思大家可以看一下,也可以大概的理解Python為什麼是這樣的,同時,我們寫的代碼應該是什麼樣的了。 今天突然好奇是怎麼實現的,於是就探究了一下,先看this是啥: 可以看出來是一個模塊,里 ...
  • 1、絕對路徑 os.path.abspath("文件名"): 顯示的是一個文件的絕對路勁 eg: 2、相對路徑 os.path.dirname("文件名"): 顯示的是一個文件的相對路徑 eg: 3、總結 一般情況下,絕對路勁函數和相對路徑函數是結合起來用的,特別是在多個文件包之前相互導入 ①os. ...
  • (1)、模塊標準模塊、第三方模塊初識模塊:sys \ os一般標準庫存放路徑 C:\Users\Administrator\AppData\Local\Programs\Python\Python35\Lib第三方引用安裝庫存放路徑:C:\Users\Administrator\AppData\Lo ...
  • Structs2中的Bean預設的是單例,在整個程式運行期間,每個Bean只有一個實例,只要程式在運行,這個實例就一直存在。 對於Action來說,單例就容易出問題。如果客戶端每次提交的參數都是一樣的,後面提交的值把前面提交的值覆蓋了,那問題還不是很大。但是如果存在可選參數的情況,比如上次提交的是參 ...
  • 一、@ModelAttribute 註解 對方法標註 @ModelAttribute 註解,在調用各個目標方法前都會去調用 @ModelAttribute 標記的註解。本質上來說,允許我們在調用目標方法前操縱模型數據。 1.在 @ModelAttribute 標註的方法處向模型中存入數據 說明一下: ...
  • 模擬登陸系統主要練習文件的操作、條件語句、迴圈等 知識點: 1.str.strip([chars]): 刪除字元串前邊和後邊的所有空格,chars參數可以定製需要刪除的字元,可選。 input().strip()可以去除用戶輸入時帶入的空格,避免產生不必要的錯誤。 用法: account = inp ...
  • # # COMMON SPRING BOOT PROPERTIES## This sample file is provided as a guideline. Do NOT copy it in its# entirety to your own application. ^^^# # # COR ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...