Python基礎學習筆記-正則表達式(1)

今天學習正則表達式,用于查找匹配

什么是正則表達式?

正則表達式(regex)又是規(guī)則表達式,正則表達式通常被用來檢索、替換那些符合某個模式(規(guī)則)的文本,例如word中的查找與替換,正則表達式是對字符串操作的一種邏輯公式,利用特定字符的組合,組成規(guī)則的類似字符串。例如, \d 是一個正則表達式, 表示一位數(shù)字字符,即任何一位 0 到 9 的數(shù)字。

如果你想要知道打來的電話是否是你需要的電話號碼,你可能不是很清楚全部的電話號碼,只知道部分號碼,(比如號碼有415-555-4242,或者(415) 555-4242等不同的電話格式)那么怎么通過正則表達式去判斷

  • 1.用正則表達式查找文本模式

415-555-4242如果用正則表達模式可以表達為\d\d\d-\d\d\d-\d\d\d\d,或者加上{ }表示次數(shù),可以表達為\d{3}-\d{3}-\d{4},從而匹配正確電話格式

1.1正則表達式的函數(shù)模塊re,利用re模塊創(chuàng)建正則表達式,利用re.compile返回對象到Regex,即phoneNumRegex中包含一個Regex對象

import re
phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')

1.2匹配Regex,利用 search()方法查找傳入的字符串, 尋找該正則表達式的所有匹配。如果沒有找到該正則表達模式的就返回None,如果找到該正則表達模式,利用group()則返回實際匹配對象。

phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
mo=phoneNumRegex.search('My number is 415-555-4242.')
print('Phone number found: ' + mo.group())
  • 2.匹配文本

如果想要把(415) 555-4242該電話的區(qū)號分開,則需要在正則表達式中添加括號,創(chuàng)建分組,然后用group()匹配對象。

image.png

2.1如果想要篩選匹配的對象有括號,可以用\進行轉(zhuǎn)義

image.png

2.2利用管道命令 |進行分組,相當于或的意思

image.png

指定相同的字符,如白色白天白雪都有白,則正則表達式為:

image.png

2.3使用?可以選擇可選匹配

image.png

2.4使用*可實現(xiàn)匹配零次或者多次,而+則是實現(xiàn)匹配一次或者多次

來自書本

image.png
  • 3.使用findall()尋找匹配對象,相當于search()

image.png

其中,如果匹配的是沒有分組的正則表達式,那么返回的為列表,如果有分組則返回的為元組

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容