python正则表达式匹配总结

一、通用格式

import re    #导入模块

re_name = re.compile(r'表达式')   #匹配类型表达式

value_name = re_name.search('要查找的数据')   #匹配要查找的数据

print_name = value_name.group()    #将查找到的数据打印

print (print_name)    #python3打印找到的数据

二、各参数

2.1 利用括号分组

2.2 用管道匹配多个分组

2.3 用问号实现可选匹配

2.4 用星号匹配零次或多次

2.5 用加号匹配一次或多次

2.6 用花括号匹配特定次数

2.7 贪心和非贪心匹配

2.8 findall()方法

2.9 字符分类

2.10 建立自己的字符分类

2.11 插入字符和美元字符

2.12 通配字符

2.13 用点-星匹配所有字符

2.14 用句点字符匹配换行

三 总结

 ?匹配零次或一次前面的分组。
 *匹配零次或多次前面的分组。
 +匹配一次或多次前面的分组。
 {n}匹配 n 次前面的分组。
 {n,}匹配 n 次或更多前面的分组。
 {,m}匹配零次到 m 次前面的分组。
 {n,m}匹配至少 n 次、至多 m 次前面的分组。
 {n,m}?或*?或+?对前面的分组进行非贪心匹配。
 ^spam 意味着字符串必须以 spam 开始。
 spam$意味着字符串必须以 spam 结束。
 .匹配所有字符,换行符除外。
 \d、\w 和\s 分别匹配数字、单词和空格。
 \D、\W 和\S 分别匹配出数字、单词和空格外的所有字符。
 [abc]匹配方括号内的任意字符(诸如 a、b 或 c)。
 [^abc]匹配不在方括号内的任意字符。

四 例子

简单复制数据查找电话号码与查找邮件地址

import pyperclip, re
phoneRegex = re.compile(r'(\d{3})(\.)(\d{3})(\.)(\d{4})')
emailRegex = re.compile(r'([a-z]+@[a-z]+\.com)')
text = str(pyperclip.paste())
matches = []
for groups in phoneRegex.findall(text):
    phoneNum = '-'.join([groups[0], groups[2], groups[4]])
    matches.append(phoneNum)
print (matches)
for groups in emailRegex.findall(text):
    matches.append(groups)
print (matches)
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.')



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页