正則表達式(復習)

文章目錄

    • 一、[]: 一個字符集合
    • 二、{}: 重復次數
    • 三、特殊符號
    • 四、(): 分組
    • 五、python代碼示例
    • 六、注意

正則表達式(regular expression)描述了一種字符串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。

一、[]: 一個字符集合

[] 被稱為字符類,用于定義一個字符集合,匹配該集合中任意一個字符。
在方括號內列出所有可能匹配的字符,正則表達式會匹配方括號中任意一個字符。

特殊符號含義
-來表示一個字符范圍
^表示排除方括號中指定的字符,例如:[ ^0-9] 非數字
\d[0-9]
\D[^0-9]
\w[a-zA-Z0-9_]
\W[^a-zA-Z0-9_]
\s匹配任意空白字符,包括空格、制表符、換行符等
\S匹配任意非空白字符
\b單詞邊界,匹配單詞的開始或結束位置,例如:\bcat\b匹配獨立的單詞 cat,而不會匹配 category 中的 cat
\B非單詞邊界,匹配不在單詞開始或結束的位置,例如:\Bing\B 對于 string 中的 ing 會匹配,而對于 sing 則不匹配

二、{}: 重復次數

{} 被稱為量詞,用于指定前面的元素(字符、字符類或分組)出現的次數。

特殊符號含義
+{1, } 1次以上
*{0,} 0次以上
?{0,1} 0次或1次、注:跟在 *+{} 等后面時,表示非貪婪匹配
.匹配任意一個字符(換行除外)

三、特殊符號

特殊符號含義
^匹配開始的字符串
$匹配結尾的字符串
\轉譯符,例如:\. 匹配 .\d 匹配任意數字(等價于 [0-9]
|或者。例如:[a|b]

四、(): 分組

  1. 分組,將多個字符組合成一個整體
  2. 創建捕獲組,保存匹配內容
  3. 創建非捕獲組((?:)
  4. 反向引用(\數字
  1. 分組,將多個字符組合成一個整體
import re# 匹配連續出現兩次的 "ab"
pattern = r'(ab){2}'
text = 'abababc'
result = re.findall(pattern, text)
print(result) 	 # ['ab']
  1. 創建捕獲組,保存匹配內容
import re# 匹配日期,格式為 "年-月-日",并捕獲年、月、日
pattern = r'(\d{4})-(\d{2})-(\d{2})'
text = 'Today is 2024-10-15.'
result = re.search(pattern, text)
if result:print("Full match:", result.group(0))	# Full match: 2024-10-15print("Year:", result.group(1))			# Year: 2024print("Month:", result.group(2))		# Month: 10print("Day:", result.group(3))			# Day: 15
  1. 創建非捕獲組((?:)
import re# 使用非捕獲組匹配 "abc" 或 "def" 后面跟著一個數字
pattern = r'(?:abc|def)\d'
text = 'abc1 def2 ghi3'
result = re.findall(pattern, text)
print(result) 		# ['abc1', 'def2']
  1. 反向引用(\數字
import re# 匹配連續出現兩次相同的單詞
pattern = r'(\b\w+\b)\s+\1'
text = 'hello hello world'
result = re.findall(pattern, text)
print(result) 		# ['hello']

五、python代碼示例

Python中,使用re模塊來實現正則表達式。

import re
regex = 'a'
string = 'abc'# 1. re.search(regex, string)
# 檢查這個字符串string是否匹配正則表達式
if re.search(regex, string) is not None:print(string)	# abc# 2. results = re.findall(regex, string)
# 匹配帶正則表達式的那部分字符串
string = '2014 was a good year, but 2025 will be better!'
years = re.findall('[1-2][0-9]{3}', string)
print(years)	# ['2014', '2025']# 3. result.group(0)
# 分組提取,見上面分組

六、注意

正則表達式里使用\作為轉義字符

假如你需要匹配文本中的字符\,name編程語言表示的正則表達式需要4個反斜杠\\\\,前兩個和后兩個分別用于在編程語言中轉義成反斜杠,轉換成兩個反斜杠后再在正則表達式中轉義成一個反斜杠。Python中的原生字符串很好的解決了這個問題,這個例子中的正則表達式可以使用r"\\"表示。同樣,匹配一個數字的"\\d"可以寫成r"\d",不需要再擔心是否漏寫了反斜杠,寫出來的表達式也更直觀。

import reif re.search("\\\\", "I have one nee\dle") is not None:print("Match")
else:print("Not Match")
import reif re.search(r"\\", "I have one nee\dle") is not None:print("Match")
else:print("Not Match")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/73097.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73097.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73097.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ARMV8的64位指令

一、介紹 ARMv8 體系結構最大的改變是增加了一個新的 64 位的指令集,這是早前 ARM 指令集 的有益補充和增強。它可以處理 64 位寬的寄存器和數據并且使用 64 位的指針來訪問內存。這 個新的指令集稱為 A64 指令集,運行在 AArch64 狀態。 ARMv8 兼容舊的…

線性代數之矩陣特征值與特征向量的數值求解方法

文章目錄 前言1. 冪迭代法(Power Iteration)冪法與反冪法求解矩陣特征值冪法求最大特征值編程實現補充說明 2. 逆冪迭代法(Inverse Iteration)移位反冪法 3. QR 算法(QR Algorithm)——稠密矩陣理論推導編程…

VScode:運行程序停止后,頻繁出現終端進程被終止

VScode里面powershell被迫關閉 bug場景排查原因解決辦法 bug場景 系統:Windows IDE:Visual Studio Code 停止運行程序后,按向上箭頭想要執行上一步命令,忽然終端頁面強行關閉,并報錯如下: 終端進程 &quo…

[MERN] 使用 socket.io 實現即時通信功能

[MERN] 使用 socket.io 實現即時通信功能 效果實現如下: MERN-socket.io 實現即時聊天 Github 項目地址:https://github.com/GoldenaArcher/messenger-mern 項目使用了 MERN(MongoDB, Express, React, Node.js) socket.io 實現即時通信功能,并且使用了…

【菜鳥飛】Conda安裝部署與vscode的結合使用

介紹 Conda 是一個跨平臺的開源工具,用于管理軟件包和環境。最初由 Anaconda 公司開發,它的設計目標是支持數據科學和機器學習領域,但其功能不僅局限于此。 以下是 Conda 的核心特點: 包管理:安裝、更新、卸載各種庫…

《Android應用性能優化全解析:常見問題與解決方案》

目錄 一、UI卡頓/掉幀 二、內存泄漏(Memory Leak) 三、ANR(Application Not Responding) 四、列表滑動卡頓(RecyclerView/ListView) 五、冷啟動耗時過長 六、內存抖動(Memory Churn&#x…

【MySQL是怎么運行的】0、名詞解釋

聚簇索引:聚簇索引和數據在一起,又名主鍵索引,是主鍵id構建的一顆B樹,非葉節點是主鍵id,葉子節點是真實數據。其他索引統稱二級索引,也稱為非聚簇索引。覆蓋索引:查找的數據就在索引樹上&#x…

深入解析 TCP 協議【真題】

傳輸控制協議(TCP)解析與題目解析 題目解析 關于傳輸控制協議(TCP)表述不正確的是? A. 主機尋址 B. 進程尋址 C. 流量控制 D. 差錯控制 TCP(Transmission Control Protocol)是面向連接、可靠傳…

單例模式的五種實現方式

1、餓漢式 ①實現:在類加載的時候就初始化實例 ②優點:線程安全 ③缺點:實例在類加載的時候創建,可能會浪費資源 //餓漢式 public class EagerSingleton{private EagerSingleton(){} //私有構造方法private static EagerSingle…

SwiftUI 讓視圖自適應高度的 6 種方法(四)

概覽 在 SwiftUI 的世界里,我們無數次都夢想著視圖可以自動根據布局上下文“因勢而變”?。大多數情況下,SwiftUI 會將每個視圖尺寸處理的井井有條,不過在某些時候我們還是得親力親為。 如上圖所示,無論頂部 TabView 容器里子視圖…

小程序SSL證書過期怎么辦?

SSL證書就像小程序的“安全鎖”,一旦過期,用戶訪問時會被提示“不安全”,輕則流失客戶,重則數據泄露!作為企業負責人,如何快速解決證書過期問題?又該如何避免再次踩坑?這篇指南給你答…

ClickHouse優化技巧實戰指南:從原理到案例解析

目錄 ?ClickHouse優化核心思想?表結構設計優化?查詢性能優化技巧?數據寫入優化方案?系統配置調優實戰?高可用與集群優化?真實案例解析?總結與建議 1. ClickHouse優化核心思想 ClickHouse作為OLAP領域的明星引擎,其優化需遵循列式存儲特性,把握…

DeepSeek 助力 Vue3 開發:打造絲滑的表格(Table)之添加列寬調整功能,示例Table14_02帶邊框和斑馬紋的固定表頭表格

前言:哈嘍,大家好,今天給大家分享一篇文章!并提供具體代碼幫助大家深入理解,徹底掌握!創作不易,如果能幫助到大家或者給大家一些靈感和啟發,歡迎收藏關注哦 💕 目錄 Deep…

服務自動被kill掉的原因和查看

服務在運行一段時間后被自動kill掉可能是由多種原因引起的,包括系統資源限制、進程管理策略、應用程序錯誤等。以下是一些常見的原因以及定位問題的過程: 常見原因 系統資源限制: 內存不足:如果服務消耗了過多的內存,系統可能會kill掉該進程以釋放內存資源。CPU使用過高:…

基礎算法——順序表

一、詢問學號 題?來源&#xff1a;洛? 題?鏈接&#xff1a;P3156 【深基15.例1】詢問學號 - 洛谷 難度系數&#xff1a;★ 1. 題目描述 2. 算法原理 直接? vector 或者數組模擬即可。 3. 參考代碼 #include <iostream> #include <vector>using namespace st…

Ubuntu用戶安裝cpolar內網穿透

前言 Cpolar作為一款體積小巧卻功能強大的內網穿透軟件&#xff0c;不僅能夠在多種環境和應用場景中發揮巨大作用&#xff0c;還能適應多種操作系統&#xff0c;應用最為廣泛的Windows、Mac OS系統自不必多說&#xff0c;稍顯小眾的Linux、樹莓派、群輝等也在起支持之列&#…

C#實現高性能異步文件下載器(支持進度顯示/斷點續傳)

一、應用場景分析 異步文件下載器用處很大&#xff0c;當我們需要實現以下功能時可以用的上&#xff1a; 大文件下載&#xff08;如4K視頻/安裝包&#xff09; 避免UI線程阻塞&#xff0c;保證界面流暢響應多任務并行下載 支持同時下載多個文件&#xff0c;提升帶寬利用率后臺…

Oracle比較好的幾本書籍

1.《Oracle專家高級編程》 2.《Oracle高效設計》 3.《Oracle9i&10g&11g編程藝術深入數據庫體系結構》 4.《讓Oracle跑的更快》(1/2) ....... n.《Oracle官方文檔的閱讀》下面包括這幾個部分&#xff0c;可以跟進研讀一下&#xff1a; &#xff08;1&#xff09;《…

js和java中方法重載(js本身是不支持方法重載,方便對比學習)

js如果需要實現方法重載 示例 1&#xff1a;根據參數數量實現重載 function overloadExample() {if (arguments.length 1) {console.log(一個參數:, arguments[0]);} else if (arguments.length 2) {console.log(兩個參數:, arguments[0], arguments[1]);} else {console.l…

Android : Camera之CHI API

來自&#xff1a; https://www.cnblogs.com/szsky/articles/10861918.html 一、CAM CHI API功能介紹&#xff1a; CHI API建立在Google HAL3的靈活性基礎之上&#xff0c;目的是將Camera2/HAL3接口分離出來用于使用相機功能&#xff0c;它是一個靈活的圖像處理驅動程序&#…