正则表达式基础
单字符匹配:
\d:匹配所有的数字字符
\D:除了\d
\s:匹配所有的空白字符,\t,空格等
\S:除了\s
\w:匹配数字,字母,下划线,中文
\W:除了\w
.:除了换行符以外的所有字符
[]:匹配其中的任意一个字符,如[0-5]:匹配0到5之间的任意一个数字,同理[a-z],[A-Z]
数量修饰符
{}:修饰前边的一个字符出现多少次
{5,}:至少5次,能匹配多少就匹配多少
{5,8}:至少5次,对多8次
{0,}:任意多次,相当于*
{1,}:至少1次,多了不限,相当于+
{0,1}:可有可无 ,相当于?
延伸的用法:
.*:都能匹配,长度不限
.+:至少一次才能匹配
小括号是非常有用的,
():分组
- 可以视为一个整体
- 子模式 \1 \2 $1 $2
贪婪模式:
.*?
.+?
模式修正符:
re.I:忽略大小写
re.S:视为单行模式
re.M:视为多行模式
re.match():从字符串的头开始匹配,如果匹配成功,返回的是一个对象,匹配失败报错。
re.findall():匹配所有,返回的是一个列表,列表中的元素是匹配到的内容,若没有匹配到则返回一个空列表
re.search():从字符串的任意位置开始匹配,匹配成功就直接返回,匹配不成功就报错。
import re
正则表达式的包
string = "this is a love1ly girl lovel1y"
pattern = re.compile(r"lovely")
ret = pattern.search(string)
print(ret.group())
# group()是返回匹配的整个表达式的字符串