正則表達(dá)式
正則表達(dá)式是一種強(qiáng)大的字符串操作工具。它是一種領(lǐng)域特定語(yǔ)言 (DSL),不管是 Python 還是在大多數(shù)現(xiàn)代編程語(yǔ)言中都是作為庫(kù)存在。
它們主要面向兩種任務(wù):
- 驗(yàn)證字符串是否與模式匹配 (例如,字符串具有電子郵件地址的格式)。
- 在字符串中執(zhí)行替換(例如將所有大寫(xiě)字母改成小寫(xiě)字母)。
特定于領(lǐng)域的語(yǔ)言是高度專業(yè)化的迷你編程語(yǔ)言。
正則表達(dá)式是一個(gè)例子,SQL(用于數(shù)據(jù)庫(kù)操作)是另一個(gè)例子。
私有領(lǐng)域特定語(yǔ)言通常用于特定的工業(yè)目的。
Python 的正則表達(dá)式可以使用 re 模塊訪問(wèn),re 模塊是標(biāo)準(zhǔn)庫(kù)的一部分。
當(dāng)你定義一個(gè)正則表達(dá)式,可以使用 re.match 函數(shù)用于確定是否匹配字符串的開(kāi)始部分。如果匹配則 match 函數(shù)返回表示匹配的對(duì)象,如果不匹配則返回 None。
為了避免在處理正則表達(dá)式時(shí)出現(xiàn)混淆,我們將 r 添加到字符串前綴。該字符串不需要轉(zhuǎn)義任何東西,使得正則表達(dá)式的使用變得更容易。
from re import matchmsg = r"super"if match(msg,"superman!"): print("You are True")else: print("Occur an error! Foolish...")運(yùn)行結(jié)果:
>>>
You are True
>>>
上面的例子檢查模式 super 是否匹配字符串,如果匹配,則打印 You are True。
這里的模式是一種簡(jiǎn)單的單詞,但是有些字符串,在正則表達(dá)式中使用它們時(shí)會(huì)有特殊的意義。
匹配模式的其他函數(shù)有 re.match 和 re.findall。
re.match 在字符串中找到匹配。
re.findall 返回一個(gè)包含匹配的列表。
import restring = "Hello python!Hello python!Hello python!"pattern = r".python."print(re.match(pattern,string))print(re.findall(pattern,string))
運(yùn)行結(jié)果:
>>>
None
[' python!', ' python!', ' python!']
>>>
從上面的示例中,我們可以得出:
match() 函數(shù)是從內(nèi)容的第一個(gè)字符開(kāi)始匹配,如果匹配不到,就得到None
findall() 函數(shù)從全部?jī)?nèi)容匹配,如果有多個(gè),找出所有匹配的
函數(shù) re.finditer 執(zhí)行與 re.findall 相同的操作,但它返回一個(gè)迭代器,而不是一個(gè)列表。
正則表達(dá)式的 search 函數(shù)返回一個(gè)對(duì)象,包含幾個(gè)更詳細(xì)的信息。
此方法包括返回字符串匹配的值,返回第一次匹配的開(kāi)始和結(jié)束位置,以及以元組形式返回第一個(gè)匹配的開(kāi)始和結(jié)束位置的 span 函數(shù)。
import restring = "Hello python!Hello python!Hello python!"pattern = r".python."match = re.search(pattern,string)if match: print(match.group()) print(match.start()) print(match.end()) print(match.span())
新聞熱點(diǎn)
疑難解答
圖片精選