Python---正則表達式彙總

一、正則表達式概述

  1. 正則表達式使用單個字符串描述匹配符合某個規則的字符串
  2. 它是對字符串操作的一種邏輯公式
  3. 它的應用場景:處理文本和數據
  4. 匹配過程:依次拿出表達式和文本中字符比較,如果每個字符串都能匹配,則成功

二、re模塊

講到Python的正則表達式就不能不提到re模塊,引用re模塊的方法也非常簡單,直接import re 即可。

使用re模塊匹配曾則表達式的流程

  1. 生成pattern對象:調用re.compile(…)函數,只能通過這個才能生成pattern對象。
  2. 進行匹配:pattern.match(…)函數,將pattern對象與具體的字符串進行匹配。
  3. 得出結果。
    注:在第一步編寫正則表達式的時候,通常習慣在正則表達式之前加一個r,例如:re.complie(r’\d+’),其中這個r表示原生字符串的意思,表示不轉義,即‘\‘就是代表‘\‘。

三、符號集介紹

  • .:匹配任意一個字符(除了\n)
  • […]:匹配字符集
  • \d / \D :匹配數字 / 非數字
  • \s / \S :匹配空白 / 非空白字符
  • \w / \W :匹配單詞字符[a-zA-Z0-9] / 非單詞字符
  • ?:匹配前一個字符集0次或者1次
  • {m} / {m,n} :匹配前一個字符集m次 / m到n次
  • ? / +? / ??:非貪婪模式,儘可能少地匹配子字符,舉個例子:現有字符串1bc,正則表達式爲[0-9][a-z]?時:只能匹配1,[a-z]最少爲0個;正則表達式爲[0-9][a-z]+?時:能匹配到1b,此時[a-z]中最少能匹配到1個;當爲第三種情況[0-9][a-z]??時:最多匹配到1。
  • 下面爲邊界字符集:1、^:匹配字符串的開頭。2、 $:匹配結尾。3、\A / \Z :指定字符串必須出現在開頭或者結尾。例如:[1-9]?\d|100表示0-100的所有數字,包括邊界。

四、分組匹配

  1. |:匹配左右任意一個表達式(類似於或)。
    eg:0-100表示爲 [1-9]?\d$|100
    2.(ab):括號中表達式作爲一個分組
    eg:[\w]{4,6}@(163|126).com:匹配163或者126
    3.\<>:匹配標記語言,舉個例子
    eg:’<([\w]+>)[\w]《/ \1’其可以匹配出Python,其中 \1:可以簡單理解成匹配分組內容([\w]+>):即’Book>’匹配到()裏面包含的東西
    4.(?P):給分組起一個別名
    5.(?P:):匹配名爲name的分組對應的字符串

五、re的方法

1.search(pattern ,String ,flags = 0):在一個字符串中查找匹配指定的字符串與find類似(固定特定字符串)
eg:Str1 = ‘imooc vedionum = 1000’ ; info = re.search(r’\d+’,Str1)
2.findall(pattern ,String ,flags = 0):找到匹配,返回所有匹配部分的列表,與find方法不同。
3.sub(pattern ,repl ,String ,count = 0 , flags = 0):將字符串匹配正則表達式的部分替換爲其他值。其中repl:既可以是字符串,也可以是函數名(返回值爲字符串)。就第二種情況舉個例子
eg:def add1(match):
val = match.group()
num = int(val) + 1
return str(num)
4.split(pattern ,String ,maxsplit = 0 ,flags = 0):根據匹配分割字符串,返回分割字符串組成的列表。

發佈了45 篇原創文章 · 獲贊 29 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章