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.')