[] 정규 표현식 전화 번호, 이메일 주소 빠른 추출 과정의 실제 사용

그림 삽입 설명 여기


머리말

원래 프로젝트에 수정을 개인화 -이 프로젝트는 그들이 연습, 참고 도서는 "지루한를 자동화 할 수 파이썬은 빠른 시작 프로그래밍", 배운 것을 정규 표현식 패턴 매칭과 연습을위한 것입니다.

-

첫째, 문제의 배경

긴 기사 또는 모든 페이지를 찾을 수있는 지루한 작업을 고려 전화 번호, 휴대 전화 번호, 이메일 주소를.

우리는 우리가 신속하게 번호와 이메일 주소 긴 클립 보드에있는 문서를 깔끔하게 인쇄 모두를 찾을 수 있도록 프로그램을 설계해야합니다.

일반 과정은 이것이다 :
우리는 Ctrl + A는, 최종 전화 번호, 전화 번호, 전자 메일 주소가 디스플레이 창에 깔끔하게 할 모든 텍스트 다음 Ctrl + C 클립 보드에 복사 한 다음 프로그램을 실행을 선택 눌러 인쇄.

-

둘째, 기능 분석

첫 번째 단계 : 정규 표현식을 구축

  • 세 개의 정규 표현식의 전화 번호, 휴대 전화 번호, 이메일 주소 건설
  • 우리는 가능한 한 완전한으로 형성 세 가지 요소로 구성 알아야 및 번호, 이메일 모든 형태의 커버

2 단계 : 규칙적인 일치를 수행

  • 를 사용하여 텍스트 콘텐츠를 pyperclip
  • 세 개의 정규 표현식 일치를 사용 findall은 () 모든 일치를 찾을 수
  • 내용 형식은 통합에 맞게 다음 다시 인쇄 작업의 뒷면을 촉진 목록에 추가 된

3 단계 : 인쇄 결과

  • 깔끔하게 세 가지 내용의 전화 번호, 휴대 전화 번호, 이메일 주소를 인쇄
  • 일치하는 항목이없는 경우, 메시지가 없습니다 표시 발견

프레임 워크는 다음과 같습니다 :

import re
import pyperclip

# 第一步:构建正则表达式

# 【01】创建电话号码的正则表达式

# 【02】创建手机号码的正则表达式

# 【03】创建邮箱的正则表达式

# 第二步:进行正则匹配

# 第三步:打印结果

-

셋째, 코드 구현

그런 다음 직접 코드에서 코드의 특정 의견에 명시된

import re
import pyperclip

# 第一步:构建正则表达式

# 创建电话号码的正则表达式
phoneRegex = re.compile(r'''(
    (\d{3}|\(\d{3}\))             # 3位数字或者带括号的3位数字
    (\s|-)?                       # 分隔符:空格或者-(匹配0次或1次)
    (\d{3})                       # 3位数字
    (\s|-)                        # 分隔符:空格或者-
    (\d{4})                       # 4位数字
    )''',re.VERBOSE)              # re.VERBOSE 管理复杂表达式

# 创建手机号码的正则表达式
cellphoneRegex = re.compile(r'''(
    ^(\d{3})              # 3位数字开始
    (-)?                  # 分隔符:-(匹配0次或1次) 因为有可能没有分隔符
    (\d{4})               # 4位数字
    (-)?                  # 分隔符:-(匹配0次或1次) 因为有可能没有分隔符
    (\d{4})$              # 4位数字结束
    )''',re.VERBOSE)      # re.VERBOSE 管理复杂表达式

# 创建邮箱的正则表达式  [email protected]
emailRegex = re.compile(r'''(
    [a-zA-Z0-9._%+-]+        # 收件人账号(可以使用的符号)
    @                        # 匹配连接符@
    [a-zA-Z0-9.-]+           # 服务器名
    \.                       # 点 dot
    ([a-zA-Z]{2,4})          # 域名
    )''',re.VERBOSE)         #  re.VERBOSE 管理复杂表达式


# 第二步:进行正则匹配

text = str(pyperclip.paste())  

phonematches=[]                        #  创建电话号码列表
cellphonematches=[]                  #  创建手机号码列表
emailmatches=[]                       #  创建邮箱地址列表

# 查找匹配电话号码并添加到列表
for group in phoneRegex.findall(text):
    phoneNumber = '-'.join([group[1],group[3],group[5]])
    phonematches.append(phoneNumber)

# 查找匹配手机号码并添加到列表
for group in cellphoneRegex.findall(text):
    cellphoneNumber = '-'.join([group[1],group[3],group[5]])
    cellphonematches.append(cellphoneNumber)

# 查找匹配邮箱地址并添加到列表
for group in emailRegex.findall(text):
    emailmatches.append(group[0])

# 第三步:打印结果

if len(phonematches) > 0:
    print('查找电话号码:')
    print('\n'.join(phonematches))
else:
    print('没查找到任何电话号码')

print('\n-----------------------------------------------------')

if len(cellphonematches) > 0:
    print('查找手机号码:')
    print('\n'.join(cellphonematches))
else:
    print('没查找到任何手机号码')

print('\n-----------------------------------------------------')

if len(emailmatches) > 0:
    print('查找邮箱地址:')
    print('\n'.join(emailmatches))
else:
    print('没查找到任何邮箱地址')

print('\n-----------------------------------------------------')

그 다음 우리는 CSDN의 클립 보드 선택 모두에 복사하는 실험 주제로 가정하고 프로그램을 실행합니다.
그림 삽입 설명 여기
다음과 같이 최종 인쇄 결과는 :
그림 삽입 설명 여기
지금, 그것은 아무것도 문제를 보인다.

-

넷째, 복구 디스크 요약

  • 지식 재 사용의 이해를 깊게하기 위해이 프로젝트를 통해 참조 [파이썬] 다시 아스날의 기초 : 정규 표현식
  • 일치하는 내용의 형태로 구성에서 정규 표현식 난이도 거짓말의 건설이 가능한 커버 모든 가능한 오류 또는 누락이 경기에 이라기 발생, 생각하는
  • 깔끔한 인쇄의 내용과 형식을 통일 경기의 마지막 부분도 매우 중요하다

-
그림 삽입 설명 여기

게시 35 개 원래 기사 · 원의 찬양 (35) · 전망 2746

추천

출처blog.csdn.net/nilvya/article/details/103828340