2.?的作用
匹配零次或一次前面的分组
3.区分match对象的groups()、group()、group(1)……
group(0)和group()一样,返回所有匹配的文本
groups(1)返回第一个分组
groups()返回所有分组
4.完成课本的实例,匹配电话号码和邮箱。
import re,pyperclip
phone_regex=re.compile(r’’’(
(\d{3}|(\d{3}))? #区号 ,可选
(\s|-|.)? #分割
(\d{3}) #前三位
(\s|-|.) #分割
(\d{4}) #中间四位
(\s*(ext|x|ext.)\s*(\d{2,5}))? #可选的分机号
)’’’, re.VERBOSE)
email_regex=re.compile(r’’’(
[a-zA-z0-9._+%-]+ #邮箱名
@
[a-zA-Z0-9.-]+ #域名
(.[a-zA-Z]{2,4}) #顶级域名
)’’’,re.VERBOSE)
text = str(pyperclip.paste()) #取得剪贴板上文本
matches =[]
for groups in phone_regex.findall(text):
phoneNum = ‘-’.join([groups[1], groups[3], groups[5]]) #取一三五分组
if groups[8]!=’’ :
phoneNum += ’ x’ + groups[8]
matches.append(phoneNum)
for groups in email_regex.findall(text):
matches.append(groups[0])
if len(matches)>0:
pyperclip.copy(’\n’.join(matches))
print(“复制到剪贴板:”)
print(’\n’.join(matches))
else:
print(‘未发现电话号码和邮件地址’)