正則介紹,建立、匹配Regex對象

來源:互聯網
上載者:User

標籤:完整   使用   import   顯示   mpi   怎麼   空值   one   沒有   

1 前面的電話號碼尋找程式能工作,但是 使用了很多代碼,做的事情卻有限;
isPhoneNumber()函數有17行,但只能尋找一種電話號碼模式。像415.555.4242或者(415)555-4242這樣的電話號碼格式,該怎麼查?
如果電話號碼有分機,例如415-555-4242 x99,該怎麼查?
所以isPhoneNumber()函數在驗證的時候會失敗。

2 Regex,簡稱為regex,是文字模式的描述方法。
例如,\d 是一個Regex,表示一位元字字元,即任何一位0到9的數字。
python使用Regex \d\d\d-\d\d\d-\d\d\d,來匹配前面isPhoneNumber()函數匹配的同樣文本:3個數字、一個虛線、3個數字、一個虛線、4個數字
所有其他字串都不能匹配 \d\d\d-\d\d\d-\d\d\d Regex

但是 Regex可以複雜得多。
例如:在一個模式後加上花括弧包圍的3({3}),就是說,"匹配這個模式3次"。所以較短的Regex \d{3}-\d{3}-\d{4},也可以匹配正確的電話號碼格式。


python中所有Regex的函數都在re模組中。在互動式環境中輸入一下代碼,匯入該模組
import re
注意:在實際的開發例子中,都需要用到re模組,所以要記得在每個指令碼開始處匯入它,或者重新啟動IDLE時。
否則會報錯,錯誤訊息 NameError:name‘re‘is not defined

向re.compile()傳入一個字串值,表示Regex,它將返回一個Regex模式對象(或者就簡稱為Regex對象)

要建立一個regex對象來匹配電話號碼模式,就在互動式環境下輸入以下代碼:
回憶以下,\d 表示"一個數字字元",\d\d\d-\d\d\d-\d\d\d\d是正確電話號碼模式的Regex。

phoneNumRegex = re.compile(r‘\d\d\d-\d\d\d-\d\d\d\d‘)

現在 phoneNumRegex 變數包含了一個 Regex對象


Regex 對象的search()方法尋找傳入的字串,尋找該Regex的所有匹配。
如果字串中沒有找到該Regex模式,search()方法將返回None。如果找到了該模式,search()方法返回一個Match。
Match有一個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)

變數名 mo是一個通用的名稱,用於Match對象。這個例子可能看起來有點複雜,但它比前面的isPhoneNumber.py程式短很多,並且做的事情一樣。
以上代碼的步驟:
1 將期待的模式傳遞給re.compile(),並且將的得到的Regex對象儲存在phoneNumRegex中。
2 在phoneNumRegex上調用search(),向它傳入想尋找的字串
3 尋找的結果儲存在變數mo中

在這個例子中,
1 知道模式會在這個字串中找到,所以知道會返回一個Match對象。
2 知道mo包含一個Match對象,而不是空值,就可以在mo變數上調用group(),返回匹配的結果。
3 將mo.group()寫在列印語句中,顯示出完整的匹配,即 415-555-4242


python使用Regex的步驟:
1 用 import re 匯入Regex
2 用 re.compile()函數建立一個Regex對象(記得使用原始字串)
3 向Regex對象的search()方法傳入想尋找的字串。它將返回一個Match對象
4 調用Match對象的group()方法,返回實際匹配文本的字串

可利用網頁的Regex測試程式,可以清楚的表示,一個Regex如何匹配輸入的一段文本
推薦的測試程式位於 http://regexpal.com/

正則介紹,建立、匹配Regex對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.