選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Python 教程

Python 主頁 Python 簡介 Python 入門 Python 語法 Python 註釋 Python 變數 Python 資料型別 Python 數字 Python 型別轉換 Python 字串 Python 布林值 Python 運算子 Python 列表 Python 元組 Python 集合 Python 字典 Python If...Else Python While 迴圈 Python For 迴圈 Python 函式 Python Lambda Python 陣列 Python 類/物件 Python 繼承 Python 迭代器 Python 多型 Python 作用域 Python 模組 Python 日期 Python 數學 Python JSON Python 正則表示式 Python PIP Python Try...Except Python 使用者輸入 Python 字串格式化

檔案處理

Python 檔案處理 Python 讀取檔案 Python 寫入/建立檔案 Python 刪除檔案

Python 模組

NumPy 教程 Pandas 教程 SciPy 教程 Django 教程

Python Matplotlib

Matplotlib 簡介 Matplotlib 入門 Matplotlib Pyplot Matplotlib 繪圖 Matplotlib 標記 Matplotlib 線條 Matplotlib 標籤 Matplotlib 網格 Matplotlib 子圖 Matplotlib 散點圖 Matplotlib 條形圖 Matplotlib 直方圖 Matplotlib 餅圖

機器學習

入門 均值、中位數、眾數 標準差 百分位數 資料分佈 正態資料分佈 散點圖 線性迴歸 多項式迴歸 多元迴歸 縮放 訓練/測試 決策樹 混淆矩陣 層次聚類 邏輯迴歸 網格搜尋 分類資料 K-means Bootstrap Aggregation 交叉驗證 AUC - ROC 曲線 K-近鄰

Python MySQL

MySQL 入門 MySQL 建立資料庫 MySQL 建立表 MySQL 插入 MySQL 選擇 MySQL Where MySQL Order By MySQL 刪除 MySQL 刪除表 MySQL 更新 MySQL Limit MySQL Join

Python MongoDB

MongoDB 入門 MongoDB 建立資料庫 MongoDB 集合 MongoDB 插入 MongoDB Find MongoDB Query MongoDB Sort MongoDB 刪除 MongoDB 刪除集合 MongoDB 更新 MongoDB Limit

Python 參考

Python 概述 Python 內建函式 Python 字串方法 Python 列表方法 Python 字典方法 Python 元組方法 Python 集合方法 Python 檔案方法 Python 關鍵字 Python 異常 Python 詞彙表

模組參考

Random 模組 Requests 模組 Statistics 模組 Math 模組 cMath 模組

Python 如何操作

刪除列表重複項 反轉字串 兩個數字相加

Python 示例

Python 示例 Python 編譯器 Python 練習 Python 測驗 Python 伺服器 Python 面試問答 Python 訓練營 Python 證書

Python RegEx


RegEx,或稱正則表示式,是構成搜尋模式的字元序列。

RegEx 可用於檢查字串是否包含指定的搜尋模式。


RegEx 模組

Python 有一個內建的包叫做 re,可以用來處理正則表示式。

匯入 re 模組

import re

Python 中的 RegEx

匯入 re 模組後,就可以開始使用正則表示式了。

示例

搜尋字串,看它是否以“The”開頭並以“Spain”結尾

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
自己動手試一試 »

RegEx 函式

re 模組提供了一組函式,讓我們能夠搜尋字串以查詢匹配項。

函式 描述
findall 返回一個包含所有匹配項的列表
search 如果字串中的任何位置都有匹配項,則返回一個 匹配物件
split 返回一個字串在每次匹配處被拆分的列表
sub(下標) 將一個或多個匹配項替換為另一個字串


元字元

元字元是具有特殊含義的字元

字元 描述 示例 試一試
[] 一組字元 "[a-m]" 試一試 »
\ 表示一個特殊序列(也可用於轉義特殊字元) "\d" 試一試 »
. 任何字元(換行符除外) "he..o" 試一試 »
^ 以...開頭 "^hello" 試一試 »
$ 以...結尾 "planet$" 試一試 »
* 零次或多次出現 "he.*o" 試一試 »
+ 一次或多次出現 "he.+o" 試一試 »
? 零次或一次出現 "he.?o" 試一試 »
{} 恰好指定次數的出現 "he.{2}o" 試一試 »
| 或者 "falls|stays" 試一試 »
() 捕獲和分組    

特殊序列

特殊序列是跟在一個 \ 後面,後面跟著一個列表中的字元,並且具有特殊含義。

字元 描述 示例 試一試
\A 如果指定的字元位於字串的開頭,則返回匹配項。 "\AThe" 試一試 »
\b 返回一個匹配項,其中指定的字元位於單詞的開頭或結尾。
(開頭的“r”確保字串被視為“原始字串”)
r"\bain"

r"ain\b"
試一試 »

試一試 »
\B 返回一個匹配項,其中指定的字元存在,但不在單詞的開頭(或結尾)。
(開頭的“r”確保字串被視為“原始字串”)
r"\Bain"

r"ain\B"
試一試 »

試一試 »
\d 返回一個字串中包含數字(0-9)的匹配項。 "\d" 試一試 »
\D 返回一個字串中不包含數字的匹配項。 "\D" 試一試 »
\s 返回字串中包含空格字元的匹配項。 "\s" 試一試 »
\S 返回字串中不包含空格字元的匹配項。 "\S" 試一試 »
\w 返回字串中包含任何單詞字元(從 a 到 Z 的字元,從 0-9 的數字,以及下劃線 _ 字元)的匹配項。 "\w" 試一試 »
\W 返回字串中不包含任何單詞字元的匹配項。 "\W" 試一試 »
\Z 如果指定的字元位於字串的末尾,則返回匹配項。 "Spain\Z" 試一試 »

集合

集合是用一對方括號 [] 括起來的字元集,具有特殊含義。

Set 描述 試一試
[arn] 返回一個匹配項,其中包含指定的字元之一(arn)。 試一試 »
[a-n] 返回一個匹配項,該匹配項是按字母順序排列在 an 之間的任何小寫字母。 試一試 »
[^arn] 返回一個匹配項,該匹配項是除 arn 之外的任何字元。 試一試 »
[0123] 返回一個匹配項,其中包含指定的數字之一(0123)。 試一試 »
[0-9] 返回一個匹配項,該匹配項是 09 之間的任何數字。 試一試 »
[0-5][0-9] 返回一個匹配項,該匹配項是 0059 之間的任何兩位數。 試一試 »
[a-zA-Z] 返回一個匹配項,該匹配項是按字母順序排列在 az 之間的大寫或小寫字母。 試一試 »
[+] 在集合中,+*.|()${} 沒有特殊含義,因此 [+] 表示:返回字串中任何 + 字元的匹配項。 試一試 »

 

findall() 函式

findall() 函式返回一個包含所有匹配項的列表。

示例

列印所有匹配項的列表

import re

txt = "The rain in Spain"
x = re.findall("ai", txt)
print(x)
自己動手試一試 »

列表按找到的順序包含匹配項。

如果沒有找到匹配項,則返回一個空列表。

示例

如果未找到匹配項,則返回一個空列表

import re

txt = "The rain in Spain"
x = re.findall("Portugal", txt)
print(x)
自己動手試一試 »

 

search() 函式

search() 函式搜尋字串以查詢匹配項,如果找到匹配項,則返回一個 匹配物件

如果存在多個匹配項,則僅返回第一個匹配項。

示例

搜尋字串中的第一個空格字元

import re

txt = "The rain in Spain"
x = re.search("\s", txt)

print("第一個空格字元位於位置:", x.start())
自己動手試一試 »

如果沒有找到匹配項,則返回 None 值。

示例

進行一個不會返回匹配項的搜尋

import re

txt = "The rain in Spain"
x = re.search("Portugal", txt)
print(x)
自己動手試一試 »

 

split() 函式

split() 函式返回一個字串在每次匹配處被拆分的列表。

示例

在每個空格字元處拆分

import re

txt = "The rain in Spain"
x = re.split("\s", txt)
print(x)
自己動手試一試 »

可以透過指定 maxsplit 引數來控制出現次數。

示例

僅在第一次出現時拆分字串

import re

txt = "The rain in Spain"
x = re.split("\s", txt, 1)
print(x)
自己動手試一試 »

 

sub() 函式

sub() 函式將匹配項替換為您選擇的文字。

示例

將每個空格字元替換為數字 9

import re

txt = "The rain in Spain"
x = re.sub("\s", "9", txt)
print(x)
自己動手試一試 »

可以透過指定 count 引數來控制替換次數。

示例

替換前 2 次出現

import re

txt = "The rain in Spain"
x = re.sub("\s", "9", txt, 2)
print(x)
自己動手試一試 »

 

匹配物件

匹配物件是包含有關搜尋和結果資訊的物件。

注意: 如果沒有找到匹配項,則返回 None 值,而不是匹配物件。

示例

進行一個會返回匹配物件的搜尋

import re

txt = "The rain in Spain"
x = re.search("ai", txt)
print(x) # 這將列印一個物件
自己動手試一試 »

匹配物件具有用於檢索有關搜尋和結果資訊的屬性和方法。

.span() 返回一個包含匹配項的開始和結束位置的元組。
.string 返回傳遞給函式的字串。
.group() 返回匹配項所在的字串部分。

示例

列印第一個匹配項的開始和結束位置。

正則表示式查詢任何以大寫字母“S”開頭的單詞。

import re

txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.span())
自己動手試一試 »

示例

列印傳遞給函式的字串。

import re

txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.string)
自己動手試一試 »

示例

列印匹配項所在的字串部分。

正則表示式查詢任何以大寫字母“S”開頭的單詞。

import re

txt = "The rain in Spain"
x = re.search(r"\bS\w+", txt)
print(x.group())
自己動手試一試 »

注意: 如果沒有找到匹配項,則返回 None 值,而不是匹配物件。



×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援