python正则表达regex_Python 正则表达式(RegEx)
版權(quán)所有,未經(jīng)許可,禁止轉(zhuǎn)載
正則表達(dá)式是組成搜索模式的字符序列。
正則表達(dá)式用于按指定的搜索模式搜索字符串。
正則表達(dá)式(RegEx)模塊
Python有一個(gè)名為re的內(nèi)置包,用來處理正則表達(dá)式。
示例
導(dǎo)入re模塊:
import re
Python中的正則表達(dá)式
導(dǎo)入re模塊后,就可以開始使用正則表達(dá)式:
示例
搜索字符串,查看是否以“the”開頭,以“Spain”結(jié)尾:
import re
txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)
正則表達(dá)式函數(shù)
re模塊提供了一組函數(shù),用于搜索匹配的字符串:
函數(shù)
描述
findall
返回包含所有匹配項(xiàng)的列表
search
如果文本中有匹配項(xiàng),則返回匹配對(duì)象
split
使用字符串分割文本,返回文本被分割后的列表
sub
用字符串替換一個(gè)或多個(gè)匹配項(xiàng)/td>
元字符
元字符是具有特殊意義的字符:
字符
描述
例子
[]
字符集合
"[a-m]"
\
標(biāo)志特殊轉(zhuǎn)義字符(也可以用來轉(zhuǎn)義特定字符)
"\d"
.
任何字符(換行字符除外)
"he..o"
^
開始文本
"^hello"
$
結(jié)束文本
"world$"
*
0次或多次出現(xiàn)
"aix*"
+
1次或多次出現(xiàn)
"aix+"
{}
確定的出現(xiàn)次數(shù)
"al{2}"
|
或者
"falls|stays"
()
捕獲并分組
特殊轉(zhuǎn)義字符
特殊轉(zhuǎn)義字符是\后面跟著下面列表中的某個(gè)字符,有特殊的含義:
字符
描述
例子
\A
如果指定字符串位于文本的開頭,則返回匹配項(xiàng)
"\AThe"
\b
如果指定字符串位于文本開頭或結(jié)尾,則返回匹配項(xiàng)
r"\bain"
r"ain\b"
\B
如果指定字符串沒有位于文本開頭或結(jié)尾,則返回匹配項(xiàng)
r"\Bain"
r"ain\B"
\d
如果文本中包含了數(shù)字(0-9),返回匹配項(xiàng)
"\d"
\D
如果文本中不包含數(shù)字(0-9),返回匹配項(xiàng)
"\D"
\s
返回文本中包含空白字符的匹配項(xiàng)
"\s"
\S
返回文本中不包含空白字符的匹配項(xiàng)
"\S"
\w
如果文本中包含任何單詞字符(從a到Z的字符,從0到9的數(shù)字,以及下劃線_字符),返回匹配項(xiàng)
"\w"
\W
如果文本中不包含任何單詞字符(從a到Z的字符,從0到9的數(shù)字,以及下劃線_字符),返回匹配項(xiàng)
"\W"
\Z
如果指定的字符串位于文本末尾,則返回匹配項(xiàng)
"Spain\Z"
集合
集合是一對(duì)方括號(hào)[]中的一組字符,具有特殊的含義:
Set
描述
[arn]
返回匹配指定字符(a、r或n)之一的匹配項(xiàng)
[a-n]
返回匹配任意a和n之間,小寫字符的匹配項(xiàng)
[^arn]
返回匹配除a、r和n之外的任何字符的匹配項(xiàng)
[0123]
返回匹配指定數(shù)字(0、1、2或3)的匹配項(xiàng)
[0-9]
返回匹配0到9之間任意數(shù)字的匹配項(xiàng)
[0-5][0-9]
返回匹配從00到59的任意兩位數(shù)的匹配項(xiàng)
[a-zA-Z]
返回匹配按字母順序在a和z之間、小寫或大寫的任何字符的匹配項(xiàng)
[+]
在集合中,+,*,.,|,(),$,{}沒有特殊的含義,所以[+]的意思是: 返回字符串中"+"字符的匹配項(xiàng)
findall()函數(shù)
findall()函數(shù)返回一個(gè)包含所有匹配項(xiàng)的列表。
示例
打印包含所有匹配項(xiàng)的列表:
import re
str = "The rain in Spain"
x = re.findall("ai", str)
print(x)
列表中的匹配項(xiàng)按找到的順序排序。
如果沒有找到匹配項(xiàng),返回一個(gè)空列表:
示例
打印所有匹配項(xiàng)的列表:
import re
str = "The rain in Spain"
x = re.findall("Portugal", str)
print(x)
search() 函數(shù)
search() 搜索文本中的匹配項(xiàng),如果有匹配項(xiàng),返回匹配對(duì)象。
如果有多個(gè)匹配項(xiàng),只返回第一個(gè):
示例
搜索文本中的第一個(gè)空白字符:
import re
str = "The rain in Spain"
x = re.search("\s", str)
print("第一個(gè)空白字符位于:", x.start())
如果沒有找到匹配項(xiàng),則返回None值:
示例
不匹配:
import re
str = "The rain in Spain"
x = re.search("Portugal", str)
print(x)
split() 函數(shù)
split()函數(shù)使用字符串分割文本,返回文本被分割后的列表:
示例
在每個(gè)空白字符處分割文本:
import re
str = "The rain in Spain"
x = re.split("\s", str)
print(x)
可以通過指定maxsplit參數(shù)來控制分割次數(shù):
示例
只在第一次匹配時(shí)分割字符串:
import re
str = "The rain in Spain"
x = re.split("\s", str, 1)
print(x)
sub() Function
將匹配項(xiàng)替換為指定文本:
示例
用數(shù)字9替換每個(gè)空白字符:
import re
str = "The rain in Spain"
x = re.sub("\s", "9", str)
print(x)
可以通過count參數(shù)來控制替換的數(shù)量:
示例
替換前兩項(xiàng):
import re
str = "The rain in Spain"
x = re.sub("\s", "9", str, 2)
print(x)
匹配對(duì)象
匹配對(duì)象是一個(gè)包含搜索和結(jié)果信息的對(duì)象。
注意: 如果沒有匹配,則返回None值,而不是匹配對(duì)象。
示例
搜索一下,將返回一個(gè)匹配對(duì)象:
import re
str = "The rain in Spain"
x = re.search("ai", str)
print(x) #打印對(duì)象
匹配對(duì)象具有用于檢索搜索信息的屬性和方法:
.span() 返回一個(gè)元組,其中包含匹配項(xiàng)的開始和結(jié)束位置。
.string 返回傳遞給函數(shù)的文本
.group() 返回文本中匹配的部分
示例
打印第一個(gè)匹配項(xiàng)的位置(開始和結(jié)束位置)。
正則表達(dá)式查找任何以大寫字母“S”開頭的單詞:
import re
str = "The rain in Spain"
x = re.search(r"\bS\w+", str)
print(x.span())
示例
打印傳入函數(shù)的文本:
import re
str = "The rain in Spain"
x = re.search(r"\bS\w+", str)
print(x.string)
示例
打印文本中匹配的部分。
正則表達(dá)式查找任何以大寫字母“S”開頭的單詞:
import re
str = "The rain in Spain"
x = re.search(r"\bS\w+", str)
print(x.group())
注意: 如果沒有匹配,則返回None值,而不是匹配對(duì)象。
總結(jié)
以上是生活随笔為你收集整理的python正则表达regex_Python 正则表达式(RegEx)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络安全等级保护测评高风险判定指引_等保
- 下一篇: 二级python 刷题就能过吗_Pyth