#学习了正则表达式,就可以完成一个简单的项目了 #python3! import re import pyperclip #复制和粘贴字符串 # phoneRegex=re.compile(r''' # (\d{3}|\(\d{3}\))? #area code # (\s|-|\.)? #separator # # ''') #不打了,累 phoneRegex=re.compile(r'''( (\d{3}|\(\d{3}\))? #area code (\s|-|\.)? #separator(可选) (\d{3}) #first 3 digits (\s|-|\.) #separator(不可选) (\d{4}) #last 4 digits (\s*(ext|x|ext.)\s*(\d{2,5}))? #extension )''',re.VERBOSE ) #TODO:Create email regex.It's all right. emailRegex=re.compile(r''' ([a-zA-Z0-9._%+-]+ #username @ #@ symbol [a-zA-Z0-9.-]+ #domain name (\.[a-zA-Z]{2,4}) #dot-something )''',re.VERBOSE) #TODO:Find matches in clipboard text. text=str(pyperclip.paste())#将剪切板上面的文字提取成一个字符串 #最好是理解为这个地方有人操作了 #做的操作就是一个"粘贴" #这是很形象的 matches=[] #需要注意下面的phoneRegex.findall(text)返回一个元组 for groups in phoneRegex.findall(text): phoneNum='-'.join([groups[1],groups[3],groups[5]]) #jion是个什么函数? if groups[8]!='':#分机号不是空加入分机号 phoneNum+=' x'+groups[8] matches.append(phoneNum) for groups in emailRegex.findall(text): matches.append(groups[0])#groups[0]分组0匹配整个正则表达式不是在group中成立么?这里是什么原理 #可见 #group(0)和groups[0]表面上差不多 #实际上是不同的 #group是match object的方法 #而findall返回的不是列表就是元组 #根本不像search返回一个match object #二者是不同的 #但是一些用法是相通的 #如对元组的某个元素索引为[0]则直接返回这个元组的和 #实际上emailRegex.findall(text)返回的元组是很特别的 #这点还需探究 #TODO:探究emailRegex.findall(text)返回的元组有何特点 #TODO:Copy results to the clipboard. 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.')
项目(正则表达式)-从剪切板提取电话号和E-mail
最新推荐文章于 2022-07-11 17:02:39 发布