我是靠谱客的博主 虚拟心情,最近开发中收集的这篇文章主要介绍python正则表达式基础re模块匹配电话号码和邮箱,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

# Python中isdecimal()函数的作用是检查一个字符串是否仅有十进制的数字字符构成。如果是则返回True,否则返回False
# 假设你希望在字符串中查找电话号码。你知道模式:3 个数字,一个短横线,3
# 个数字,一个短横线,再是 4 个数字。例如:415-555-4242
def is_phone_number(text):
if len(text) != 12:
return False
for i in range(0, 3):
if not text[i].isdecimal():
return False
if text[3] != "-":
return False
for i in range(4, 7):
if not text[i].isdecimal():
return False
if text[7] != "-":
return False
for i in range(8, 12):
if not text[i].isdecimal():
return False
return True
text = "111/555-6666"
print(is_phone_number(text))
message = 'Call me at 415-555-1011 tomorrow. 415-555-9999 is my office.'
for i in range(len(message)):
chunk = message[i:i+12]
if is_phone_number(chunk):
print('Phone number found: ' + chunk)
import re
# 用正则表达式
# 三步骤:
# 1.创建Regex 对象re.compile()
# 2.查找匹配的字符串search()
# 3.用group返回group()
# d表使匹配数字
# 向 re.compile()传入一个字符串值,表示正则表达式,它将返回一个 Regex 模式
# 对象(或者就简称为 Regex 对象)
phone_number_regx = re.compile(r"ddd-ddd-dddd")
mo = phone_number_regx.search("My number is 415-555-4242.")
print(mo.group())
# 我们将期待的模式传递给 re.compile(),并将得到的 Regex 对象保存在
# phoneNumRegex 中。然后我们在 phoneNumRegex 上调用 search(),向它传入想查找
# 的字符串。查找的结果保存在变量 mo 中。在这个例子里,我们知道模式会在这个
# 字符串中找到,所以我们知道会返回一个 Match 对象。知道 mo 包含一个 Match 对
# 象,而不是空值 None,我们就可以在 mo 变量上调用 group(),返回匹配的结果。
# 将 mo.group()写在打印语句中,显示出完整的匹配,即 415-555-4242。
# search方法外,Regex对象也有一个findall()方法。search()将返回一个Match
# 对象,包含被查找字符串中的“第一次”匹配的文本,而 findall()方法将返回一组
# 字符串,包含被查找字符串中的所有匹配
# findall()不是返回一个 Match 对象,而是返回一个字符串列表
phone_number_find = re.compile(r"ddd-ddd-dddd")
mf = phone_number_find.findall('Cell: 415-555-9999 Work: 212-555-0000')
print(mf)
# d 0 到 9 的任何数字
# D 除 0 到 9 的数字以外的任何字符
# w 任何字母、数字或下划线字符(可以认为是匹配“单词”字符)
# W 除字母、数字和下划线以外的任何字符
# s 空格、制表符或换行符(可以认为是匹配“空白”字符)
# S 除空格、制表符和换行符以外的任何字符
# 用 sub()方法替换字符串
msg = re.compile(r'Agent w+')
msg_n = msg.sub("AAA", 'Agent Alice gave the secret documents to Agent Bob.')
print(msg_n) # 输出 AAA gave the secret documents to AAA.
# 项目:电话号码和 E-mail 地址提取程序
#
从剪贴板取得文本。
#
找出文本中所有的电话号码和 E-mail 地址。
#
将它们粘贴到剪贴板。
# 现在你可以开始思考,如何用代码来完成工作。代码需要做下面的事情:
#
使用 pyperclip 模块复制和粘贴字符串。
#
创建两个正则表达式,一个匹配电话号码,另一个匹配 E-mail 地址。
#
对两个正则表达式,找到所有的匹配,而不只是第一次匹配。
#
将匹配的字符串整理好格式,放在一个字符串中,用于粘贴。
#
如果文本中没有找到匹配,显示某种消息。
# 创建一个电话号码正则表达式
import pyperclip, re
# 电话号码匹配111-111-1111
phone_num_re = re.compile(
r"""(
(d{3}|(d{3}))?
(s|-|.)? # separator
(d{3}) # first 3 digits
(s|-|.) # separator
(d{4}) # last 4 digits
(s*(ext|x|ext.)s*(d{2,5}))?
)""",
re.VERBOSE)
# emial匹配
emil_reg = re.compile(r'''(
[a-zA-Z0-9._%+-]+ # username
@ # @ symbol
[a-zA-Z0-9.-]+ # domain name
(.[a-zA-Z]{2,4}) # dot-something
)''', re.VERBOSE)
text = str(pyperclip.paste())
matches = []
for groups in phone_num_re.findall(text):
phoneNum = '-'.join([groups[1], groups[3], groups[5]])
if groups[8] != '':
phoneNum += ' x' + groups[8]
matches.append(phoneNum)
for groups in emil_reg.findall(text):
matches.append(groups[0])
if len(matches) > 0:
pyperclip.copy('n'.join(matches))
print('Copied to clipboard:')
print('n'.join(matches))
else:
print('No phone numbers or email addresses found.')‘

re模块是一个让人头疼的模块多记

最后

以上就是虚拟心情为你收集整理的python正则表达式基础re模块匹配电话号码和邮箱的全部内容,希望文章能够帮你解决python正则表达式基础re模块匹配电话号码和邮箱所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部