版權所有,未經許可,禁止轉載
章節
- Python 介紹
- Python 開發環境搭建
- Python 語法
- Python 變量
- Python 數值類型
- Python 類型轉換
- Python 字符串(String)
- Python 運算符
- Python 列表(list)
- Python 元組(Tuple)
- Python 集合(Set)
- Python 字典(Dictionary)
- Python If … Else
- Python While 循環
- Python For 循環
- Python 函數
- Python Lambda
- Python 類與對象
- Python 繼承
- Python 迭代器(Iterator)
- Python 模塊
- Python 日期(Datetime)
- Python JSON
- Python 正則表達式(RegEx)
- Python PIP包管理器
- Python 異常處理(Try…Except)
- Python 打開文件(File Open)
- Python 讀文件
- Python 寫文件
- Python 刪除文件與文件夾
正則表達式是組成搜索模式的字符序列。
正則表達式用於按指定的搜索模式搜索字符串。
正則表達式(RegEx)模塊
Python有一個名為re
的內置包,用來處理正則表達式。
示例
導入re
模塊:
import re
Python中的正則表達式
導入re
模塊后,就可以開始使用正則表達式:
示例
搜索字符串,查看是否以“the”開頭,以“Spain”結尾:
import re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
正則表達式函數
re
模塊提供了一組函數,用於搜索匹配的字符串:
函數 | 描述 |
---|---|
findall | 返回包含所有匹配項的列表 |
search | 如果文本中有匹配項,則返回匹配對象 |
split | 使用字符串分割文本,返回文本被分割后的列表 |
sub | 用字符串替換一個或多個匹配項/td> |
元字符
元字符是具有特殊意義的字符:
字符 | 描述 | 例子 |
---|---|---|
[] | 字符集合 | "[a-m]" |
\ | 標志特殊轉義字符(也可以用來轉義特定字符) | "\d" |
. | 任何字符(換行字符除外) | "he..o" |
^ | 開始文本 | "^hello" |
$ | 結束文本 | "world$" |
* | 0次或多次出現 | "aix*" |
+ | 1次或多次出現 | "aix+" |
{} | 確定的出現次數 | "al{2}" |
| | 或者 | "falls|stays" |
() | 捕獲並分組 |
特殊轉義字符
特殊轉義字符是\
后面跟着下面列表中的某個字符,有特殊的含義:
字符 | 描述 | 例子 |
---|---|---|
\A | 如果指定字符串位於文本的開頭,則返回匹配項 | "\AThe" |
\b | 如果指定字符串位於文本開頭或結尾,則返回匹配項 | r"\bain" r"ain\b" |
\B | 如果指定字符串沒有位於文本開頭或結尾,則返回匹配項 | r"\Bain" r"ain\B" |
\d | 如果文本中包含了數字(0-9),返回匹配項 | "\d" |
\D | 如果文本中不包含數字(0-9),返回匹配項 | "\D" |
\s | 返回文本中包含空白字符的匹配項 | "\s" |
\S | 返回文本中不包含空白字符的匹配項 | "\S" |
\w | 如果文本中包含任何單詞字符(從a到Z的字符,從0到9的數字,以及下划線_字符),返回匹配項 | "\w" |
\W | 如果文本中不包含任何單詞字符(從a到Z的字符,從0到9的數字,以及下划線_字符),返回匹配項 | "\W" |
\Z | 如果指定的字符串位於文本末尾,則返回匹配項 | "Spain\Z" |
集合
集合是一對方括號[]
中的一組字符,具有特殊的含義:
Set | 描述 |
---|---|
[arn] | 返回匹配指定字符(a、r或n)之一的匹配項 |
[a-n] | 返回匹配任意a和n之間,小寫字符的匹配項 |
[^arn] | 返回匹配除a、r和n之外的任何字符的匹配項 |
[0123] | 返回匹配指定數字(0、1、2或3)的匹配項 |
[0-9] | 返回匹配0到9之間任意數字的匹配項 |
[0-5][0-9] | 返回匹配從00到59的任意兩位數的匹配項 |
[a-zA-Z] | 返回匹配按字母順序在a和z之間、小寫或大寫的任何字符的匹配項 |
[+] | 在集合中,+,*,.,|,(),$,{}沒有特殊的含義,所以[+]的意思是: 返回字符串中"+"字符的匹配項 |
findall()函數
findall()
函數返回一個包含所有匹配項的列表。
示例
打印包含所有匹配項的列表:
import re
str = "The rain in Spain"
x = re.findall("ai", str)
print(x)
列表中的匹配項按找到的順序排序。
如果沒有找到匹配項,返回一個空列表:
示例
打印所有匹配項的列表:
import re
str = "The rain in Spain"
x = re.findall("Portugal", str)
print(x)
search() 函數
search()
搜索文本中的匹配項,如果有匹配項,返回匹配對象。
如果有多個匹配項,只返回第一個:
示例
搜索文本中的第一個空白字符:
import re
str = "The rain in Spain"
x = re.search("\s", str)
print("第一個空白字符位於:", x.start())
如果沒有找到匹配項,則返回None
值:
示例
不匹配:
import re
str = "The rain in Spain"
x = re.search("Portugal", str)
print(x)
split() 函數
split()
函數使用字符串分割文本,返回文本被分割后的列表:
示例
在每個空白字符處分割文本:
import re
str = "The rain in Spain"
x = re.split("\s", str)
print(x)
可以通過指定maxsplit
參數來控制分割次數:
示例
只在第一次匹配時分割字符串:
import re
str = "The rain in Spain"
x = re.split("\s", str, 1)
print(x)
sub() Function
將匹配項替換為指定文本:
示例
用數字9替換每個空白字符:
import re
str = "The rain in Spain"
x = re.sub("\s", "9", str)
print(x)
可以通過count
參數來控制替換的數量:
示例
替換前兩項:
import re
str = "The rain in Spain"
x = re.sub("\s", "9", str, 2)
print(x)
匹配對象
匹配對象是一個包含搜索和結果信息的對象。
注意: 如果沒有匹配,則返回None值,而不是匹配對象。
示例
搜索一下,將返回一個匹配對象:
import re
str = "The rain in Spain"
x = re.search("ai", str)
print(x) #打印對象
匹配對象具有用於檢索搜索信息的屬性和方法:
.span()
返回一個元組,其中包含匹配項的開始和結束位置。.string
返回傳遞給函數的文本.group()
返回文本中匹配的部分
示例
打印第一個匹配項的位置(開始和結束位置)。
正則表達式查找任何以大寫字母“S”開頭的單詞:
import re
str = "The rain in Spain"
x = re.search(r"\bS\w+", str)
print(x.span())
示例
打印傳入函數的文本:
import re
str = "The rain in Spain"
x = re.search(r"\bS\w+", str)
print(x.string)
示例
打印文本中匹配的部分。
正則表達式查找任何以大寫字母“S”開頭的單詞:
import re
str = "The rain in Spain"
x = re.search(r"\bS\w+", str)
print(x.group())
注意: 如果沒有匹配,則返回None值,而不是匹配對象。