正则表达式是一种字符串匹配方法,它可以用来匹配字符串。很多语言都有正则表达式的应用,比如python应用正则表达式的地方最出名的就是爬虫中一些字段的匹配。python的正则表达式的实现由一个名叫re的模块实现,该模块下有个叫re.search()的方法,今天我们就来介绍这个方法。
1 re.search() 的作用:
re.search会匹配整个字符串,并返回第一个成功的匹配。如果匹配失败,则返回None
从源码里面可以看到re.search()方法里面有3个参数
pattern: 匹配的规则,
string : 要匹配的内容,
flags 标志位 这个是可选的,就是可以不写,可以写, 比如要忽略字符的大小写就可以使用标志位
flags 的主要内容如下
flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:
- re.I 忽略大小写
- re.L 表示特殊字符集 w, W, , B, s, S 依赖于当前环境
- re.M 多行模式
- re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
- re.U 表示特殊字符集 w, W, , B, d, D, s, S 依赖于 Unicode 字符属性数据库
- re.X 为了增加可读性,忽略空格和 # 后面的注释
2 demo 练习re.search() 的使用
2.1 search 简单的匹配
打印结果如下
从内容我们可以看到span(2, 3) 这个应该是对应的下标,所以我们想获取匹配的下标可以使用span
match 是匹配的内容, 内容为c
2.2 获取匹配的下标
打印结果如下
2.3 获取匹配的内容 ,使用group(匹配的整个表达式的字符串)
打印结果如下
注意group 和span 不能同时使用, 否则会报错
2.4 使用标志位忽略匹配的大小写
打印结果如下
这里使用大写字母C 忽略大小写之后也能匹配到c
2.5 使用search 匹配字符串里面的数组
打印结果
2.6 search 结合compile 使用
import re
content = "abc123abc"
rex_content = re.compile("d+")
rex = rex_content.search(content)
print(rex.group())
打印结果
2.7 group 的使用
import re
content = "abc123def"
rex_compile = re.compile("([a-z]*)([0-9]*)([a-z]*)")
rex = rex_compile.search(content)
print(rex.group())
print(rex.group(0)) # group()和group(0) 一样匹配的是整体
print(rex.group(1)) # 匹配第一个小括号的内容
print(rex.group(2)) # 匹配第二个小括号的内容
print(rex.group(3)) # 匹配第三个小括号的内容
打印结果
group() 小括号里面不止有数字,可以是自定的内容如下
content = "zhangsanfeng108le"
rex_compile = re.compile("(?P<name>[a-z]*)(?P<age>[0-9]*)")
rex_content = rex_compile.search(content)
print(rex_content.group())
print(rex_content.group("name")) # 这里效果等同于group(1)
print(rex_content.group("age")) # 这里效果等同于group(2)
打印结果如下
总结
到此这篇python应用正则表达式的文章就介绍到这了,更多python相关的学习内容请搜索W3Cschool以前的文章或继续浏览下面的相关文章。