1. 程式人生 > >Python學習筆記模式匹配與正則表示式之使用和不使用正則表示式

Python學習筆記模式匹配與正則表示式之使用和不使用正則表示式

 隨筆記錄方便自己和同路人查閱。

#------------------------------------------------我是可恥的分割線-------------------------------------------

  假設你希望在字串中查詢電話號碼。你知道模式: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())#輸出符合正則表示式條件的內容

  執行結果:

  對比使用和不使用正則表示式的程式碼我們可以看出,使用正則表示式的程式碼少於不使用正則表示式的程式碼,更可讀,且實現效果一樣。