python re 模塊 正則表達式

一、正則表達式基本符號

^ 表示匹配字符串的開始位置 (例外 用在中括號中[ ] 時,可以理解為取反,表示不匹配括號中字符串)
$ 表示匹配字符串的結束位置
* 表示匹配 零次到多次(記憶方法:符號是星星,天上的星星可以是無數個也可以看不到
+ 表示匹配 一次到多次 (記憶方法:符號是加號,增加的意思,至少得有一個)
? 表示匹配零次或一次(記憶方法:符號是問號,那就是有或者沒有,兩種可能
. 表示匹配單個字符
| 表示為或者,兩項中取一項
() 小括號表示匹配括號中全部字符
[] 中括號表示匹配括號中一個字符 范圍描述 如[0-9 a-z A-Z]
{} 大括號用于限定匹配次數 如 {n}表示匹配n個字符 {n,}表示至少匹配n個字符 {n,m}表示至少n,最多m
\ 轉義字符 如上基本符號匹配都需要轉義字符 如 \* 表示匹配 * 號、\w 表示英文字母和數字、\W 非字母和數字、\d 表示數字、 \D 非數字、 \s 匹配任何空白字符

更多更詳細介紹:點我查看更多正在表達式介紹

常用的正則表達式:

常用的正則表達式匹配中文字符的正則表達式: [\u4e00-\u9fa5]
匹配雙字節字符(包括漢字在內):[^\x00-\xff]
匹配空行的正則表達式:\n[\s| ]*\r
匹配HTML標記的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正則表達式:(^\s*)|(\s*$)
匹配IP地址的正則表達式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //
匹配Email地址的正則表達式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配網址URL的正則表達式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
sql語句:^(select|drop|delete|create|update|insert).*$

二、re 模塊,函數介紹

2.1 re.compile

該函數將創建一個正則表達式的對象,可以實現更有效率的復用。

import re
find_xx = re.compile('正則表達式', 修飾符)

2.2 re.findall

該函數將會搜索所有滿足條件的字符串

import re
r = re.findall('正則表達式', 文本內容, 修飾符)

返回值會因為正則表達式的小括號不同而不同 共計三種情況

2.2.1 當給出的正則表達式不帶括號的時候,列表的元素為字符串,此時字符串為整個正則表達式匹配的內容。

import retext = '2018年的下半年,9月份, 27日'
pattern = re.compile(r'\d{4}年|\d{1}月|\d{2}日')
res = pattern.findall(text)
print(res)
# 輸出結果: ['2018年', '9月', '27日']

2.2.2 正則表達式中只有一個括號,列表元素為字符串時,則內容和括號中的正則表達式對應

import re
text = '2018年的下半年,9月份, 27日'
pattern = re.compile(r'\d+(年|月|日|)')
res = pattern.findall(text)
print(res)
# 輸出結果: ['年', '月', '日']

2.2.3 如果正則表達式中有多個括號時,列表的元素為多個字符組合成的元組,元組中的字符串格式與括號數對應,內容與正則表達式順序對應。

import retest = '2018年的下半年, 9月份, 27日'
pattern = re.compile(r'(\d)+(年|月|日)')
res = pattern.findall(test)
print(res)# 輸出結果為:[('8','年'),('9','月'),('7','日')]

如果不希望按小括號分組,可以在小括號開頭輸入 ?:? ,輸出結果與 2.2.1 一致

import retest = '2018年的下半年, 9月份, 27日'
pattern = re.compile(r'(\d)+(年|月|日)')
res = pattern.findall(test)
print(res)# 輸出結果為:['2018年', '9月', '27日']

2.3 re.finditer

搜索字符串,返回一個匹配結果的迭代類型,每個迭代元素是 match 對象,相比 re.findall 它可以獲取匹配的位置

import re# 編譯正則表達式對象
pattern = re.compile(r'ab.*c')# 在字符串中查找匹配正則表達式的內容
text = 'abcfabcgabch'
matches = pattern.finditer(text)# 遍歷所有匹配
for match in matches:start_pos = match.start()end_pos = match.end()match_str = match.group()print('Match found:', match_str)print('Start position:', start_pos)print('End position:', end_pos)

2.4 re.search

搜索第一個滿足條件的字符串,查找到第一個停止

import re
find_xx = re.compile('正則表達式', '修飾符')
res = re.search(find_xx, text)

2.5 re.sub

替換所有滿足條件的字符串

import re
text = 'hello 123 world 456'
replacedStr = re.sub("\d+","222",text)
print(replacedStr)
# 返回'hello 222 world 222'

?2.6 re.split

匹配分割string maxsplit是允許被分割成幾個子串,默認是0最大化字串,如果是1則是從原本字符串中切出一個字串,其他字串整串返回。

import re
a = re.split('正則表達式', '文本', [maxsplit=0])
print(a)

2.7 group([group1,....])

返回一個或者多個子組,更詳細介紹:點我查看

import re
m = re.search('正則表達式','文本')
print(m.group(2))
# 返回第二個字串

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

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

相關文章

vue3+element-plus表格默認排序default-sort失效問題

場景 在使用動態數據渲染的場景&#xff0c;el-table設置默認屬性default-sort失效。 原因 el-table的default-sort屬性是針對靜態數據的&#xff0c;如果是動態數據&#xff0c;default-sort則無法監聽到。 案例&#xff1a;靜態數據 <template><el-table:data&…

馬斯克又出昏招、最瘋狂的舉動之一

馬斯克正在限制他不喜歡的新聞網站和競爭對手的流量。在 X&#xff08;原 Twitter&#xff09;上點擊紐約時報、路透社、Facebook、Instagram、Threads、Bluesky 和 Substack 的鏈接&#xff0c;X 故意增加 5 秒鐘的開啟延遲。 5 秒延遲&#xff0c;新的降權舉措&#xff1f; …

rust踩雷筆記(2)——一道hard帶來的思考[哈希表、字符串、滑動窗口]

今天被一道hard惡心壞了&#xff0c;算法不難&#xff0c;用C幾分鐘的事。用rust主要還是缺乏對語言的熟練度&#xff0c;記錄一下&#xff0c;主要的坑在下面這個操作&#xff1a; 對String取其中某個位置的char。 可能你會有疑問&#xff1a;這不是直接nth()取就行了么。沒錯…

聯想拯救者筆記本Win11系統鍵盤無法打字解決參考方法

一位好機友新購買的聯想拯救者筆記本在使用過程中突然發現整個鍵盤都不能使用了、不能打字、按任何按鍵都沒有反應&#xff0c;只有鼠標能正常操作&#xff1b;那么這是什么問題呢&#xff1f;能不能是筆記本的鍵盤壞了呢&#xff1f;還是筆記本出現了什么故障而引起鍵盤失靈呢…

LangChain手記 Evalutation評估

整理并翻譯自DeepLearning.AILangChain的官方課程&#xff1a;Evaluation&#xff08;源代碼可見&#xff09; 基于LLM的應用如何做評估是一個難點&#xff0c;本節介紹了一些思路和工具。 “從傳統開發轉換到基于prompt的開發&#xff0c;開發使用LLM的應用&#xff0c;整個工…

Linux 終端會話中,啟動任務并放到后臺運行

一、需求 linux要執行一個腳本&#xff0c;耗時很長&#xff0c;想要腳本在后臺運行&#xff0c;用戶注銷或終端軟件關閉時也可以繼續運行。 二、實現 1、nohup命令 腳本在后臺運行 nohup 是在 Linux 和類 Unix 系統中使用的一個命令&#xff0c;用于在后臺運行程序&#x…

Python爬蟲——scrapy_當當網圖書管道封裝

創建爬蟲項目 srcapy startproject scrapy_dangdang進入到spider文件里創建爬蟲文件&#xff08;這里爬取的是青春文學&#xff0c;仙俠玄幻分類&#xff09; srcapy genspider dang http://category.dangdang.com/cp01.01.07.00.00.00.html獲取圖片、名字和價格 # 所有的se…

c語言——查找特定字符在字符串中出現的次數

fgets 函數用于從標準輸入&#xff08;stdin&#xff09;中讀取一行字符串&#xff0c; 并將其存儲在指定的字符數組 str 中。 sizeof str/sizeof str[0] 是用來計算字符數組 str 的大小。 這個表達式計算的結果是字符數組 str 可以容納的元素個數&#xff08;包括…

【IMX6ULL驅動開發學習】07.驅動程序分離的思想之平臺總線設備驅動模型和設備樹

一、驅動程序分離的思想 【IMX6ULL驅動開發學習】05.字符設備驅動開發模板&#xff08;包括讀寫函數、poll機制、異步通知、定時器、中斷、自動創建設備節點和環形緩沖區&#xff09;_阿龍還在寫代碼的博客-CSDN博客 之前編寫驅動程序的代碼存在不少弊端&#xff1a;移植性差…

數學建模之“聚類分析”原理詳解

一、聚類分析的概念 1、聚類分析&#xff08;又稱群分析&#xff09;是研究樣品&#xff08;或指標&#xff09;分類問題的一種多元統計法。 2、主要方法&#xff1a;系統聚類法、有序樣品聚類法、動態聚類法、模糊聚類法、圖論聚類法、聚類預報法等。這里主要介紹系統聚類法…

神經網絡基礎-神經網絡補充概念-25-深層神經網絡

簡介 深層神經網絡&#xff08;Deep Neural Network&#xff0c;DNN&#xff09;是一種具有多個隱藏層的神經網絡&#xff0c;它可以用來解決復雜的模式識別和特征學習任務。深層神經網絡在近年來的機器學習和人工智能領域中取得了重大突破&#xff0c;如圖像識別、自然語言處…

Windows環境下安裝RabbitMQ

1.消息隊列中間件簡介 消息隊列中間件是分布式系統中重要的組件&#xff0c;主要解決應用耦合&#xff0c;異步消息&#xff0c;流量削鋒等問題實現高性能&#xff0c;高可用&#xff0c;可伸縮和最終一致性。 使用較多的消息隊列有 ActiveMQ&#xff08;安全&#xff09;&…

【腳踢數據結構】隊列(順序和鏈式)

(??? )&#xff0c;Hello我是祐言QAQ我的博客主頁&#xff1a;C/C語言,Linux基礎,ARM開發板&#xff0c;軟件配置等領域博主&#x1f30d;快上&#x1f698;&#xff0c;一起學習&#xff0c;讓我們成為一個強大的攻城獅&#xff01;送給自己和讀者的一句雞湯&#x1f914;&…

Ant Design Vue 下拉框輸入框 可以輸入 可以查詢

Ant Design Vue 下拉框 可以輸入 可以查詢 直接上代碼 效果圖 &#xff08;輸入內容查詢后端 返回下拉的值 &#xff0c;如何查詢后端是空的直接 把輸入的內容 賦值給 輸入框&#xff09; 在這里插入圖片描述 <template><div><a-selectv-model.lazy"i…

WPF CommunityToolkit.Mvvm

文章目錄 前言ToolkitNuget安裝簡單使用SetProperty&#xff0c;通知更新RealyCommandCanExecute 新功能&#xff0c;代碼生成器ObservablePropertyNotifyCanExecuteChangedForRelayCommand其他功能對應關系 NotifyPropertyChangedFor 前言 CommunityToolkit.Mvvm&#xff08;…

自適應AI chatgpt智能聊天創作官網html源碼

我們致力于開發先進的自適應AI智能聊天技術&#xff0c;旨在為用戶提供前所未有的聊天體驗。通過融合自然語言處理、機器學習和深度學習等領域的頂尖技術&#xff0c;我們的智能聊天系統能夠準確理解用戶的需求并給出相應的回應。 我們的自適應AI智能聊天系統具備以下核心特點…

MySQL面試題二

1、關系型和非關系型數據庫的區別&#xff1f; 關系型數據庫的優點 容易理解&#xff0c;因為它采用了關系模型來組織數據。 可以保持數據的一致性。 數據更新的開銷比較小。 支持復雜查詢&#xff08;帶 where 子句的查詢&#xff09; 非關系型數據庫&#xff08;NOSQL&#x…

fiddler抓包問題記錄,支持https、解決 tunnel to 443

fiddler下載安裝步驟及基本配置 fiddler抓包教程&#xff0c;如何抓取HTTPS請求&#xff0c;詳細教程 可能遇到的問題及解決方案 1. 不能正常訪問頁面&#xff08;所有https都無法訪問&#xff09; 解決方案&#xff1a;查看下面配置是否正確 Rules-customization 找到 OnB…

Vue中路由緩存問題及解決方法

一.問題 Vue Router 允許你在你的應用中創建多個視圖&#xff0c;并根據路由來動態切換這些視圖。默認情況下&#xff0c;當你從一個路由切換到另一個路由時&#xff0c;Vue Router 會銷毀前一個路由的組件實例并創建新的組件實例。然而&#xff0c;有時候你可能希望保持一些頁…

【推薦】深入淺出學習Spring框架【中】

目錄 1.AOP是什么? 2.案列&#xff1a; 3.spring的aop的專業術語 4.代碼模擬 4.1 前置通知 3.2.后置通知 3.3.環繞通知 3.4.異常通知 3.5.過濾通知 1.AOP是什么? 面向切面編程&#xff08;Aspect-Oriented Programming&#xff09;是一種編程范式&#xff0c;它的主要…