第二十三天- 模塊 re

来源:https://www.cnblogs.com/xi1419/archive/2018/11/16/9972212.html
-Advertisement-
Play Games

1 # r"(?P<name>正則)" 2 3 import re 4 res = re.search('e','leiyunse') # 搜索 搜到 一個 結果就返回 5 print(res.group()) # e 6 7 res = re.match('\w+','wuwu is not go ...


 

 

# 1. 正則表達式
# 元字元
# . 除了換行符外任意字元
# \w 數字 字母 下劃線
# \s 空白符
# \b 單詞的末尾
# \d 數字
# \W 除了數字 字母 下劃線
# \D 除了數字
# \S 除了空白符
# ^ 開頭
# $ 結尾
# [] 匹配字元組中的字元
# [^] 除了字元組內的元素外

# 量詞 限定符
# * {0,n} 零或者更多
# + {1,n} 一或更多
# ? {0,1} 零或一
# {p} p次
# {p,}   p次或更多次
# {p,q} 從p到q次

# .*   貪婪匹配 儘可能多的匹配到結果
# .+

# .*? 惰性匹配 是儘可能的少匹配.


# 分組 正則中使⽤()進⾏分組. 如.匹配⼀個相對複雜的⾝份證號
# ^[1-9]\d{14}(\d{2}[0-9x])?$
# ^([1-9]\d{16}[0-9x]|[1-9]\d{14})$

# 轉義
# 正則表達式中,有很多有特殊意義的是元字元,如\n和\s等,若要在正則中匹配正常的"\n"⽽不是"換⾏符"需要對"\"進⾏轉義, 變成'\\'.
# 而在python中,都是字元串的形式出現,字元串中\也有特殊的含義,本身還需轉義.所以匹配⼀次"\n",字元串中要寫成'\\n',那麼正則就要寫成"\\\\n",
# 這樣太麻煩.所以這時用r'\n'這個概念,此時的正則是r'\\n'就可以了.
# 如 r"www\.(baidu|google)\.com","www.google.com"
# \n 換行
# \\n \n
# \.
# \/
# \?



# 2. re模塊
# findall() 獲取到匹配的所有內容
# finditer() 匹配到所有內容。 返回迭代器
# search() 搜索。查到了就返回
# match() 匹配. 從頭開始匹配
 1 # r"(?P<name>正則)"
 2 
 3 import re
 4 res = re.search('e','leiyunse') # 搜索 搜到 一個 結果就返回
 5 print(res.group())  # e
 6 
 7 res = re.match('\w+','wuwu is not good man')  # match 從開頭匹配 若匹配到了就返回
 8 print(res.group())  # wuwu
 9 
10 lst = re.findall('\w+','wusir and exo')  # findall 查找所有 返回list
11 print(lst)  # ['wusir', 'and', 'exo']
12 
13 it = re.finditer("\w+","mai le fo leng")  # 返回迭代器
14 for el in it:
15     print(el.group())
16     '''
17      mai
18     le
19     fo
20     leng
21     '''
22 
23 # 分組優先順序
24 lst = re.findall(r"www\.(baidu|google)\.com","www.google.com")  # ()最優先返回
25 print(lst)  # ['google']
26 
27 # (?:) 去掉優先順序
28 lst = re.findall(r"www\.(?:baidu|google)\.com","www.google.com")
29 print(lst)  # ['www.google.com']
30 
31 # split 切割 若加括弧()會保留切的
32 lst = re.split("([ab])","alex is not a sb,no he is a big sb")
33 print(lst)
34 
35 # sub 替換
36 res = re.sub(r"\d+","_sb_","alex111wusir222taibai666ritian999")
37 print(res)  # alex_sb_wusir_sb_taibai_sb_ritian_sb_
38 
39 # subn 替換 返回元組 帶替換次數
40 res = re.subn(r"\d+","_sb_","alex111wusir222taibai666ritian999")
41 print(res)
42 
43 # re.compile() # 把正則表達式預載入
44 obj = re.compile(r"alex\d+and")
45 res = obj.search("alex222andwusir333taibai666ritian999")
46 print(res.group())  # alex222and
47 # 若數字單獨拿出來
48 obj = re.compile(r"alex(?P<name>\d+)and")
49 res = obj.search("alex222andwusir333taibai666ritian999")
50 print(res.group())  # alex222and
51 print(res.group("name"))  # 222
View Code

 











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

-Advertisement-
Play Games
更多相關文章
  • 內置對象,宿主對象,自定義對象的區別? 內置對象: 系統所提供的對象:Object,Array,Math,Date等等。 宿主對象: JS所運行的環境提供的對象:BOM中的window,DOM中的document 自定義對象: 自定義構造函數所創建的對象 。 Array類型對象: 數組創建方式: 方 ...
  • 設計模式很重要,重要性我就不再覆述了。最主要的是,通常我們在寫一定量代碼後,常用的方法什麼的都熟悉後,想再提高代碼能力,我找到的最好的方法還是去學習,理解設計模式。不理解設計模式,看一些開源框架和java源碼會很難懂。 剛學java時就從各種文章,也聽很多人說面向對象編程很重要。但是在編程時雖然會建 ...
  • 安裝 SmartSql.ZooKeeperConfig Demo 工具使用 "ZooKeeper Admin" ...
  • 一.Actor模型介紹 在單核 CPU 發展已經達到一個瓶頸的今天,要增加硬體的速度更多的是增加 CPU 核的數目。而針對這種情況,要使我們的程式運行效率提高,那麼也應該從併發方面入手。傳統的多線程方法又極其容易出現 Bug 而難以維護,不過別擔心,今天將要介紹另一種併發的模式能一定程度解決這些問題 ...
  • Map 遍歷: ...
  • Java中return用於方法,兩個作用: (1)返回方法指定類型的值(這個值總是確定的),也可以是對象 (2)方法的結束 兩種形式: (1)有返回類型 例如:return i; (2)無返回類型 return; 一般方法前有void代表無返回值,沒有void有返回值。 “break”語句用來結束循 ...
  • 有一段時間沒寫博客了,雖然是菜鳥一枚但畢竟總要有東西記錄學習的,我相信有志者事竟成。今天在工作中使用Jackson轉換了一個javabean,傳到測試服上之後發現日期少了一天,使用的是@JsonFormat註解。這裡寫了一個簡單的小demo記錄一下: 表數據: 實體類屬性: controller層就 ...
  • 小魯班今年電腦專業大四了,在學校可學了不少軟體開發的東西,也自學了一些JAVA的後臺框架,躊躇滿志,一心想著找個好單位實習。當投遞了無數份簡歷後,終於收到了一個公司發來的面試通知,小魯班欣喜若狂。 到了人家單位後,前臺小姐姐給了小魯班一份筆試題目,要求在一個小時內完成,小魯班雙手接過題目後,粗略的 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...