Python學習筆記模式匹配與正則表示式之使用和不使用正則表示式
阿新 • • 發佈:2018-11-10
隨筆記錄方便自己和同路人查閱。
#------------------------------------------------我是可恥的分割線-------------------------------------------
假設你希望在字串中查詢電話號碼。你知道模式:3個數字,一個短橫線,3個數字,一個短橫線,在是
4個數字。列如:415-555-4242.
#------------------------------------------------我是可恥的分割線-------------------------------------------
1、不使用正則表示式查詢文字中電話號碼,示例程式碼:
#! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang def isPhoneNumber(text):#定義一個函式接收文字 if len(text) != 12:#首先判斷該文字長度是否為12位 return False#如果不是就返回False for i in range(0,3):#接著判斷第0到2下標引數是否為數字 if not text[i].isdecimal(): return False#如果不是就返回False if text[3] != '-':#接著判斷第3下標引數是否為短橫線 return False#如果不是就返回False for i in range(4,7):#迴圈文字的4到6下標 if not text[i].isdecimal():#判斷4到6是否為數字 return False#如果不是就返回False if text[7] != '-':#接著判斷第7下標引數是否為短橫線 return False#如果不是就返回False for i in range(8,12):#迴圈文字的8到11下標 if not text[i].isdecimal():#判斷8到11是否為數字 return False#如果不是就返回False return True #如果上面的判斷都符合就返回True print('415-555-4242 is a phone number:') print(isPhoneNumber('415-555-4242')) print('Moshi moshi is a phone number:') print(isPhoneNumber('Moshi moshi'))
執行結果:
2、使用正則表示式查詢文字中電話號碼,示例程式碼:
#! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re#使用正則表示式需要匯入re模組 text = 'My number is 415-555-4242'#要查詢的文字 phoneNumregex = re.compile(r'\d{3}-\d{3}-\d{4}')#建立一個正則表示式 text = phoneNumregex.search(text)#使用search查詢 print(text.group())#輸出符合正則表示式條件的內容
執行結果:
對比使用和不使用正則表示式的程式碼我們可以看出,使用正則表示式的程式碼少於不使用正則表示式的程式碼,更可讀,且實現效果一樣。