文章目录
Python正则表达式
- 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
- re 模块使 Python 语言拥有全部的正则表达式功能。
- compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
- re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
正则表达式元字符
.(点)
- 点是匹配除换行符以外的任何单个字符
例子:
content = '''
苹果,是绿色的
橙子,是橙色的
草莓,是红色的
乌鸦,是黑色的
'''
import re
p = re.compile(r'.色')
for one in p.findall(content):
print(one)
图形化正则:
运行结果(我这里字符编码出了些问题…):
[](方括号)
- 常用来指定一个字符集,例如:[abc]或[a-z]
- 元字符在字符集中不起作用,例如:[asd$]
- 补集匹配不在区间范围内的字符,例如:[^5]
写了这些理论,不如来一个例子体会一下这个[]元字符是什么效果:
content = '''
苹果,是绿色的
橙子,是橙色的
草莓,是红色的
乌鸦,是黑色的
'''
import re
p = re.compile(r'[绿橙红黑]色')
for one in p.findall(content):
print(one)
图形化正则:
运行结果:
它还可以这样玩:
content = '''
小李,156888z7894,21
小张,18866716789,23
小王,13512342233,26
小崔,y3552342133,18
小刘,g3510348233,35
小唐,a3211232243,42
'''
import re
p = re.compile(r'[a-z]\d{10}')
for one in p.findall(content):
print(one)
图形化正则:
运行结果:
如果在方括号中使用 ^ , 表示 非 方括号里面的字符集合,例如:
content = 'a1b2c3d4e5'
import re
p = re.compile(r'[^\d]' )
for one in p.findall(content):
print(one)
图形化正则:
运行结果:
^(插入符)
- 匹配行首,除非设置MULTILINE标志,他只是匹配字符串的开始。
- 在MULTILINE模式里,它也可以匹配每个字符串中的换行
正则表达式可以设定 单行模式 和 多行模式
如果是 多行模式 ,表示匹配 文本每行 的开头位置。
如果是 单行模式 ,表示匹配 整个文本 的开头位置。
比如,下面的文本中,每行最前面的数字表示水果的编号,最后的数字表示价格
001-苹果价格-60,
002-橙子价格-70,
003-香蕉价格-80,
例子:
content = '''
001-苹果价格-60,
002-橙子价格-70,
003-香蕉价格-80,
'''
import re
p = re.compile(r'^\d+',re.M )
for one in p.findall(content):
print(one)
图形化正则:
运行结果可以看到,^只匹配行