發(fā)果怎么做視頻網(wǎng)站四川省最新疫情情況
34.從入門到精通:Python3 正則表達(dá)式檢索和替換 repl 參數(shù)是一個(gè)函數(shù) 正則表達(dá)式對(duì)象 正則表達(dá)式修飾符 - 可選標(biāo)志 正則表達(dá)式模式* 正則表達(dá)式實(shí)例
- 檢索和替換
- repl 參數(shù)是一個(gè)函數(shù)
- 正則表達(dá)式對(duì)象
- 正則表達(dá)式修飾符 - 可選標(biāo)志
- 正則表達(dá)式模式*
- 正則表達(dá)式實(shí)例
檢索和替換
在 Python 的 re 模塊中,可以使用 re.sub() 函數(shù)來進(jìn)行字符串的檢索和替換。
re.sub() 函數(shù)的語法如下:
re.sub(pattern, repl, string, count=0, flags=0)
其中,pattern 表示要匹配的正則表達(dá)式,repl 表示要替換成的字符串,string 表示要進(jìn)行替換的字符串,count
表示最多替換的次數(shù),flags 表示正則表達(dá)式的匹配模式。
以下是一個(gè)簡單的例子,說明如何使用 re.sub() 函數(shù)進(jìn)行字符串的替換:
import retext = "Hello, world! This is a test."
pattern = r"\b\w{4}\b"
repl = "****"
new_text = re.sub(pattern, repl, text)
print(new_text)
在這個(gè)例子中,首先定義了一個(gè)要進(jìn)行替換的字符串 text,然后使用正則表達(dá)式 \b\w{4}\b 匹配所有長度為 4 的單詞,并使用
**** 進(jìn)行替換。最后使用 re.sub() 函數(shù)進(jìn)行替換,并將替換后的字符串賦值給 new_text 變量,最后輸出 new_text。
需要注意的是,re.sub() 函數(shù)并不會(huì)修改原始字符串,而是返回一個(gè)新的字符串。如果要修改原始字符串,可以直接對(duì)原始字符串進(jìn)行賦值。
repl 參數(shù)是一個(gè)函數(shù)
- 在 Python 的 re 模塊中,re.sub() 函數(shù)可以用于在字符串中替換匹配的子串。re.sub() 函數(shù)的第一個(gè)參數(shù)是正則表達(dá)式,第二個(gè)參數(shù)是要替換成的字符串,第三個(gè)參數(shù)是要搜索的字符串。
- 除此之外,re.sub()函數(shù)還可以接受一個(gè)可調(diào)用對(duì)象作為第二個(gè)參數(shù),這個(gè)可調(diào)用對(duì)象可以根據(jù)匹配結(jié)果返回一個(gè)新的字符串。這個(gè)可調(diào)用對(duì)象通常被稱為 repl 函數(shù)。
以下是一個(gè)簡單的例子,說明如何使用 repl 函數(shù):
import re# 要替換的字符串
text = "Hello, world! This is a test."
# 替換所有的單詞為大寫字母
pattern = r"\w+"
new_text = re.sub(pattern, lambda match: match.group().upper(), text)
# 輸出替換結(jié)果
print(new_text)
在這個(gè)例子中,首先定義了一個(gè)要替換的字符串 text,然后使用 re.sub() 函數(shù)替換所有的單詞為大寫字母。在第二個(gè)參數(shù)中,使用了一個(gè)匿名函數(shù)來將匹配結(jié)果轉(zhuǎn)換為大寫字母。最后輸出替換結(jié)果。
需要注意的是,repl 函數(shù)必須接受一個(gè)參數(shù),這個(gè)參數(shù)是一個(gè)匹配對(duì)象,可以通過調(diào)用 group() 方法來獲取匹配的字符串。repl 函數(shù)可以返回任何類型的對(duì)象,但必須返回一個(gè)字符串,否則會(huì)拋出 TypeError 異常。
正則表達(dá)式對(duì)象
在 Python 的 re 模塊中,正則表達(dá)式對(duì)象是通過 re.compile() 函數(shù)創(chuàng)建的。正則表達(dá)式對(duì)象可以重復(fù)使用,可以提高程序的效率,尤其是在需要多次使用同一個(gè)正則表達(dá)式時(shí)。
以下是一個(gè)簡單的例子,說明如何使用正則表達(dá)式對(duì)象:
import re# 創(chuàng)建正則表達(dá)式對(duì)象
pattern = re.compile(r'\d+')# 使用正則表達(dá)式對(duì)象進(jìn)行匹配
text = 'There are 123 apples and 456 oranges.'
match_obj = pattern.search(text)
print(match_obj.group()) # 輸出結(jié)果:123
在這個(gè)例子中,首先使用 re.compile() 函數(shù)創(chuàng)建了一個(gè)正則表達(dá)式對(duì)象 pattern,然后使用 pattern.search( 方法進(jìn)行匹配。正則表達(dá)式對(duì)象可以多次使用,可以在程序的其他地方使用同一個(gè)對(duì)象進(jìn)行匹配。
- 需要注意的是,使用正則表達(dá)式對(duì)象進(jìn)行匹配時(shí),可以使用正則表達(dá)式對(duì)象的 search()、match()、findall()等方法。另外,正則表達(dá)式對(duì)象還可以通過調(diào)用 pattern.sub() 方法來進(jìn)行替換操作。
- 正則表達(dá)式對(duì)象還可以接受一些參數(shù),用于指定正則表達(dá)式的匹配模式。例如,可以通過 re.compile() 函數(shù)的 flags參數(shù)來指定正則表達(dá)式的匹配模式。
正則表達(dá)式修飾符 - 可選標(biāo)志
在 Python 的 re 模塊中,可以使用正則表達(dá)式修飾符(也稱為可選標(biāo)志)來更改正則表達(dá)式的匹配行為。正則表達(dá)式修飾符是在正則表達(dá)式模式中以特殊字符的形式出現(xiàn)的,用于指定匹配模式。
以下是一些常用的正則表達(dá)式修飾符:
可以使用 re.compile() 函數(shù)來指定正則表達(dá)式修飾符。例如:
import re# 不區(qū)分大小寫的匹配
pattern = re.compile("hello", re.IGNORECASE)
match_obj = pattern.search("Hello, world!")
print(match_obj.group()) # 輸出 "Hello"
在這個(gè)例子中,首先使用 re.compile() 函數(shù)指定了正則表達(dá)式模式 “hello” 和修飾符re.IGNORECASE,這表示進(jìn)行不區(qū)分大小寫的匹配。然后使用 pattern.search() 函數(shù)在字符串 “Hello,world!” 中搜索匹配結(jié)果,最后輸出匹配結(jié)果。
- 需要注意的是,正則表達(dá)式修飾符可以同時(shí)使用多個(gè),可以通過按位或運(yùn)算符 | 來組合它們。例如,re.IGNORECASE | re.MULTILINE 表示同時(shí)使用不區(qū)分大小寫的匹配和多行匹配。
正則表達(dá)式模式*
在 Python 的 re 模塊中,正則表達(dá)式模式是用于匹配字符串的模式。正則表達(dá)式模式由一些特殊字符和普通字符組成,用于指定匹配規(guī)則。
以下是一些常用的正則表達(dá)式模式:
需要注意的是,正則表達(dá)式模式中的特殊字符需要進(jìn)行轉(zhuǎn)義,例如 . 表示匹配一個(gè)點(diǎn)號(hào)??梢允褂梅葱备?\ 來進(jìn)行轉(zhuǎn)義。
以下是一個(gè)簡單的例子,說明如何使用正則表達(dá)式模式:
import re# 匹配所有的數(shù)字
pattern = "\d+"
match_obj = re.search(pattern, "There are 123 apples and 456 oranges.")
print(match_obj.group()) # 輸出 "123"
在這個(gè)例子中,正則表達(dá)式模式 “\d+” 表示匹配一個(gè)或多個(gè)數(shù)字字符。使用 re.search() 函數(shù)在字符串 “There are
123 apples and 456 oranges.” 中搜索匹配結(jié)果,最后輸出匹配結(jié)果。
正則表達(dá)式實(shí)例
下面是一些正則表達(dá)式的實(shí)例:
匹配手機(jī)號(hào)碼
import repattern = re.compile(r'^1[3-9]\d{9}$')
phone_number = '13888888888'
if pattern.match(phone_number):print('Valid phone number')
else:print('Invalid phone number')
匹配電子郵件地址
import repattern = re.compile(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$')
email = 'example@example.com'
if pattern.match(email):print('Valid email address')
else:print('Invalid email address')
匹配身份證號(hào)碼
import repattern = re.compile(r'^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[0-9Xx]$')
id_number = '110101199001011234'
if pattern.match(id_number):print('Valid ID number')
else:print('Invalid ID number')
匹配 URL
import repattern = re.compile(r'^(http|https):\/\/[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\/\S*)?$')
url = 'https://www.example.com/path/to/page.html'
if pattern.match(url):print('Valid URL')
else:print('Invalid URL')
這些正則表達(dá)式只是一些常見的例子,實(shí)際上正則表達(dá)式可以匹配各種各樣的文本模式。需要注意的是,正則表達(dá)式的性能可能會(huì)受到匹配的文本長度和復(fù)雜度的影響,需要謹(jǐn)慎使用。