import re
一、正则表达式:记录文本规则的代码
字符串处理工具
注意:需要导入re模块
1.2特点:
语法比较复杂,可读性较差
通用性强,适用于多种编程语言
步骤:
1.导入re模块
2.使用match方法进行匹配操作
re.match()能匹配出以xxx开头的字符串
re.match(pattern,string)
pattern : 匹配的正则表达式
string : 要匹配的字符串
res = re.match("M","Milk可以成功")
print(res)
如果起始位置没有匹配成功,返回None
3.如果上一步数据匹配成功,使用group()提取数据
print(res.group())
注意:match是从开始位置匹配,匹配不到就没有,且匹配的是表达式整体
二、匹配单个字符
字符 功能
. 匹配任意一个字符(除了\n)
\] 匹配\[\]中列举的字符
\\d 匹配数字,即0\~9
\\D 匹配非数字,即不是数字
\\s 匹配空白,即空格,tab键
\\S 匹配非空白
\\w 匹配单词字符,即a-z,A-Z,0-9,_
\\W 匹配非单词字符
```
1. . 匹配任意一个字符(除了\n) --常用
res = re.match('.','hello')
print(res)
print(res.group())
2. [] 匹配[]中列举的字符 --常用
res = re.match('[he]','eello') #中括号中有,就能匹配成功
res = re.match('[12345]','5432')
res = re.match('[1-5]','3412')
匹配0-9的第一种写法
res = re.match('[0123456789]','5432')
匹配0-9的第二种写法
res = re.match('[0-9]','3412')
没有3
res = re.match('[0-24-9]','3412') # 0-2,4-9
res = re.match('[a-zA-Z].','Hello') #a-zA-Z代表列举出所有大小写字母
print(res)
print(res.group())
3. \d 匹配数字,即0~9 --常用
res = re.match('\d','2345')
print(res)
print(res.group())
4. \D 匹配非数字,即不是数字 --常用
res = re.match('\D','s2345') #只要不是数字都能够匹配
print(res)
print(res.group())
5. \s 匹配空白,即空格,tab键 --常用
res = re.match('\s.h',' hh')
print(res)
print(res.group())
# 6. \S 匹配非空白
res = re.match('\S','hh')
print(res)
print(res.group())
7. \w 匹配单词字符,即a-z,A-Z,0-9,_,汉字
res = re.match('\w','景hh')
print(res)
print(res.group())
8. \W 匹配非单词字符
res = re.match('\W','.')
print(res)
print(res.group())
```
```
三、匹配多个字符
字符 功能
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少有一次
? 匹配前一个字符出现1次或者0次,即要么有一次,要么没有
{m} 匹配前一个字符出现每次
{m,n} 匹配前一个字符出现m到n次
```
```
1. * 匹配前一个字符出现0次或者无限次,即可有可无
res = re.match('\w*','hello') # *相当于修饰\w #hello
# res = re.match('\w*','hello。') #hello
# res = re.match('\d*','hello。') #没有匹配出数字,啥也没有,不会有任何输出,出现0次
print(res.group())
2. + 匹配前一个字符出现1次或者无限次,即至少有一次
res = re.match('\d+','我很开心')
print(res.group()) #报错,没有匹配到数字,+修饰时至少有一次
res = re.match('\d+','1我很开心')
print(res.group())
3. ? 匹配前一个字符出现1次或者0次,即要么有一次,要么没有
res = re.match('\d?','12我很开心')
print(res.group()) # 最多只匹配一次,只输出1
4. {m} 匹配前一个字符出现每次
res = re.match('\w{3}','python')
print(res.group()) #pyt
5. {m,n} 匹配前一个字符出现m到n次
注意:必须符合m