python正则表达式对字符串的查找匹配
#! /usr/bin/python3
# phoneAndEmail.py - Finds phone numbers and email address on the chipboard.
import pyperclip, re
americaPhoneRegex = 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)
chinesePhoneRegex = re.compile(r'1d{10}')
emailPhoneRegex = re.compile(r'''(
[a-zA-Z0-9._%+-]+ # username
@ # @ symbol
[a-zA-Z0-9.-]+ # domain name
(.[a-zA-Z]{2,4}) # dot-something
)''', re.VERBOSE)
# Find matches in clipboard text.
text = str(pyperclip.paste())
matches = []
for groups in americaPhoneRegex.findall(text):
phoneNum = '-'.join([groups[1], groups[3], groups[5]])
if groups[8] != '':
phoneNum += ' x' + groups[8]
matches.append(phoneNum)
for groups in emailPhoneRegex.findall(text):
matches.append(groups[0])
for groups in chinesePhoneRegex.findall(text):
matches.append(groups[0])
# copy results the clipboard.
if len(matches) > 0:
pyperclip.copy('
'.join(matches))
print('Copied to clipboard:')
print('
'.join(matches))
else:
print('No phone numbers or email addresses found.')