正则表达式的概念:
正则表达式(Regular Expression,简写为regex、regexp或RE)
,是计算机科学的一个概念。正则表达式是一些由字符和特殊
符号组成的规则字符串,这个“规则字符串”用来表达对字符串
的一种处理逻辑,能按照某种模式匹配一系列有相似特征的字
符串。正则表达式通常被用来 检索、分割、替换那些匹配某个
模式的文本。
正则表达式的构成
正则表达式也是一个字符串,一般称之为模式串,模式串一般
由 原子、 元字符、 修饰符组成。
特殊原子:
自定义原子:
量词:
量词表示重复前一个原子的次数,如下表所示
修饰符:
正则表达式在进行匹配时有一些默认的规则,比如说正则
匹配是严格区分大小写的,如果想改变默认的匹配模式,
可以使用修饰符,常用修饰符如下表所示。
贪婪匹配和非贪婪匹配:
1.贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是
所谓的贪婪匹配。
2.非贪婪匹配:就是匹配到结果就好,尽量少的匹配字符。
搜索和匹配:
在Python中的查找匹配方法,常见的有下面四种,他们的用
法大致相同,但是匹配出的结果却不同。
- match方法(从字符串开头匹配)
- search方法(从左向右扫描整个字符串,找到第一个匹配终止)
- findall方法(扫描整个字符串,找到所有的匹配
- finditer方法(扫描整个字符串,找到所有的匹配,并返回一个可
迭代对象)
话不多,看代码了:
import re
# 1 生成正则对象
obj = re.compile(r'[1-9]\d{4,11}$')
print(obj,type(obj))
# 2 调用方法,完成功能
print(obj.match("2346235"))
import re
url = "/login/tom/123"
# 无命名分组
# 模式串中一个小括号就是一个分组,分组编号从左向右是1,2,3...
# pattern = r'/login/(\w+)/(\w+)$'
# res = re.match(pattern,url,re.I)
# print(res)
# # 匹配成功,返回对象
# if res:
# print(res.group(1),res.group(2))
# print(res.groups())
# 命名分组
# pattern = r'/login/(?P<username>\w+)/(?P<password>\w+)$'
# res = re.match(pattern,url,re.I)
# if res:
# print(res.group('username'),res.group(1))
# print(res.group('password'),res.group(2))
# 不捕获分组内容
pattern = "\w+@(?:163|126|qq)\.com"
res = re.findall(pattern,"rere@126.com 3434@qq.com;sddd@163.com")
print(res)
import re
# res = re.match(r'明月',"明月三千里")
# if res:
# print(res)
# # search 从任意位置匹配
# res = re.search(r'九',"扶摇直上九万里")
# print(res)
# if res:
# print(res)
info ="""
曹操 男 30 23242342434 888@qq.com
曹操 男 30 37412345678 888@qq.com
曹操 男 30 34785783487 888@qq.com
曹操 男 30 12231312334 888@qq.com
曹操 男 30 54545466666 888@qq.com
"""
# finall 匹配所有子串
res = re.findall(r'\b\d{11}\b',info)
print(res)
import re
import re
# split(模式串,目标串,分割次数=0,模式修饰符=0)
# data = re.split(r'\s+|,+|,+',input("请输入三个整数(分隔符可以空格或逗号)"))
# a,b,c = [int(value) for value in data]
# print(a,b,c)
import re
pattern = r"aa"
# res = re.sub(pattern,'bb',"aAbbccaaddaaee")
# print(res)
# 替换字符串可以是一个函数
"""
def test(match_obj):
return 字符串
"""
def demo(match):
# print(match.span())
if match.span()[-1] % 3 == 0:
# group(0)是匹配的的子串
print(match.group(0))
return match.group(0) + ','
else:
return match.group(0)
s1 = "12345678" #8765431
res = re.sub(r'\d',demo,s1[::-1])
print(res[::-1])
千山万水总是情,点个关注(赞,评论)行不行。