正則表達式,以python為例

来源:http://www.cnblogs.com/xiao3c/archive/2017/06/28/7087936.html
-Advertisement-
Play Games

轉載需註明原文地址和作者兩項內容。 正則表達式目的是能夠快速處理字元串內容,主要用於找出指定的字元串,配合其他操作完成任務。使用正則表達式時要瞭解自己語言的特性,python中的正則表達式預設情況是貪婪模式,也就是不限制的情況下會儘可能多得匹配字元串。 0x00 基礎語法 0x01 python正則 ...


轉載需註明原文地址和作者兩項內容。

正則表達式目的是能夠快速處理字元串內容,主要用於找出指定的字元串,配合其他操作完成任務。
使用正則表達式時要瞭解自己語言的特性,python中的正則表達式預設情況是貪婪模式,也就是不限制的情況下會儘可能多得匹配字元串。

 

0x00 基礎語法

 1 .:匹配除換行符以外的任意字元.
 2 \s:匹配任意的空白符.
 3 \d:匹配數字.
 4 \D:匹配任何的非數字,等價於[^0-9].
 5 \b:匹配單詞的分界線.
 6 \B:匹配一個單詞的非分界線.
 7 ^:匹配字元串的開始.
 8 $:匹配字元串的結束.
 9 \w:匹配包括下劃線的任何單詞字元.類似但不等價於“[A-Za-z0-9_]”,Unicode字元集,能不能匹配漢字要視應用環境而定.
10 \W:匹配任何非單詞字元.等價“[^A-Za-z0-9_]”.
11 \:轉義,其後字元不作表達式解釋.
12 *:匹配*前面的字元0次或n次,等價於{0,}.
13 +:匹配+號前面的字元1次或n次.等價於{1,}.
14 ?:匹配?前面的字元0次或1次,等價於 {0,1}.
15 (x):匹配’x’並記錄匹配的值.
16 x│y:匹配表達式x或y.
17 {n}:匹配前面限定的字元n次.
18 {n,}:匹配前面限定的字元至少n次.
19 {n,m}:匹配前面限定的字元n-m次均可.
20 [xyz]:單字元列表,匹配括弧中的任一字元.可用連字元‘-’指出字元範圍.
21 [^xyz]:單字元列表的補集,匹配除了列出字元外的,同樣可指出字元範圍.
22 \f:匹配一個表單符.
23 \n:匹配一個換行符.
24 \r:匹配一個回車符.
25 \s:匹配一個單個white空格符,包括空格,tab,form feed,換行符,等價於[ fnrtv].
26 \S:匹配除white空格符以外的一個單個的字元,等價於[^ fnrtv].
27 t:匹配一個製表符.
28 v:匹配一個頂頭製表符.
29 \:將下一個字元標記為一個特殊字元、或一個原義字元、或一個後向引用、或一個八進位轉義符.

 

0x01 python正則模塊
import re
導入python正則表達式模塊

re.compile(str)
用於將字元串型的正則表達式編譯成一個正則表達式對象,可以直接使用對該對象使用re的方法。
返回pattern

re.findall(pattern,str)
將字元串按照正則表達式進行處理,第一個參數是匹配的正則規則,可接收pattern和字元串型的正則表達,第二個是待處理的字元串。
返回list

re.sub(pattern, replace, string, count)
將字元串中正則表達式匹配到的內容替換成指定的內容。
第二個函數是用於替換的字元串
第四個參數指替換個數。預設為0,表示每個匹配到的內容都替換。
返回str
re.sub還允許使用函數對匹配項的替換進行複雜的處理(參數2)。如:re.sub(r'\s', lambda m: '[' + m.group(0) + ']', text, 0);將字元串中的空格' '替換為'[ ]'。

re.split(pattern,str)
用於以正則匹配到的內容作為分隔符,分割字元串。
返回list

re.match(pattern, string, flags)
嘗試從字元串的開始匹配,字元串的起始處不符合正則表達式,則匹配失敗。
成功返回match,失敗返回None。
(內容可以用group()方法查看。)
第三個參數是標緻位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。

re.search(pattern, string, flags)
在整個字元串內匹配查找,找到第一個匹配然後返回,如果字元串沒有匹配,則返回None。
參數同re.match。
成功返回match,失敗返回None。

 

上述pattern也可以用str型的字元串替換,效果相同。

 

0x02 慄子


IPv4地址

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

URL(同時也是一個最小的非貪婪匹配慄子)

http://.*?/

匹配文件尾碼

.*\.php

匹配行首空格

^\s

匹配同一單詞不區分大小寫

[Tt]ools

 

 

如有錯誤煩請留言指正,之後遇到更多情況會陸續補充。


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

-Advertisement-
Play Games
更多相關文章
  • JPA是Java EE5規範之一,是一個orm規範,由廠商來實現該規範。目前有hibernate,OpenJPA,TopLink和EclipseJPA等實現 spring提供三種方法集成JPA:1、LocalEntityManagerFactoryBean:適用於那些僅使用JPA進行數據訪問的項目。 ...
  • >獲取當前時間: >獲取當天開始、結束時間: >獲取相應時間戳: >時間戳轉為字元串格式: ...
  • 15套java架構師、集群、高可用、高可擴展、高性能、高併發、性能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分散式項目實戰視頻教程 視頻課程包含: 高級Java架構師包含:Spring boot、Spring cloud、Dubbo、R ...
  • program ex1807;var n,i,j,t,f,l,q,z:integer;s1,s2:longint; a:array[1..20,1..20] of integer;begin readln(n); t:=1; f:=1; l:=n;i:=1;q:=1;z:=n; while t<=n ...
  • #include <bits/stdc++.h>using namespace std;int main(){ string s; int i=1,n,z; cin>>s; z=s[0]-48;n=s.length(); while(i<n) { if(s[i]=='+') z=z+(s[i+1]- ...
  • 在servlet中,轉發和重定向是由request和response完成的。兩者之間的區別請看我之前的文章。那麼在springMVC中是如何完成的呢? /**轉發**/ @RequestMapping("/login.do") public String login(HttpServletReque ...
  • 真是前所未有的大失誤啊,竟然快兩個月忘記寫博客了! 公司的項目組連著解散了倆,挺動蕩的! 終於把欠公司的錢還上了,這次改欠支付寶了! 摩托車也練的可以正常騎行了,拉過幾次高速,最快到111了,油門還沒到底,不知道磨合期過了之後是不是能更快一些! 房貸也開始還了,現在每個月都是收支都是負數,情況不太樂 ...
  • python中的多線程其實並不是真正的多線程,如果想要充分地使用多核CPU的資源,在python中大部分情況需要使用多進程。Python提供了非常好用的多進程包multiprocessing,只需要定義一個函數,Python會完成其他所有事情。藉助這個包,可以輕鬆完成從單進程到併發執行的轉換。mul ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...