Python学习笔记模式匹配与正则表达式之使用和不使用正则表达式

时间:2022-12-03 05:35:13

 随笔记录方便自己和同路人查阅。

#------------------------------------------------我是可耻的分割线-------------------------------------------

  假设你希望在字符串中查找电话号码。你知道模式: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'))

  运行结果:

Python学习笔记模式匹配与正则表达式之使用和不使用正则表达式

  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())#输出符合正则表达式条件的内容

  运行结果:

Python学习笔记模式匹配与正则表达式之使用和不使用正则表达式

  对比使用和不使用正则表达式的代码我们可以看出,使用正则表达式的代码少于不使用正则表达式的代码,更可读,且实现效果一样。