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