随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
假设你希望在字符串中查找电话号码。你知道模式: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())#输出符合正则表达式条件的内容
运行结果:
对比使用和不使用正则表达式的代码我们可以看出,使用正则表达式的代码少于不使用正则表达式的代码,更可读,且实现效果一样。