一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第21天
正则表达式
了解
定义
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符串、及这些特定的字符的组合,组成一个“规则字符串”,这个,这个“规则字符串”用来表达对字符串的一种过滤逻辑
作用
给定一个正则表达式和一个字符串我们可以达到如下目的
- 给定的字符串是否符合正则表达式的过滤逻辑(匹配)
- 可以通过正则表达式,从字符串中获取我们想要的特定部分
特点
- 灵活性、逻辑性和功能性非常强
- 可以迅速的用极其简单的方式达到字符串的复杂控制
应用场景(举例)
- 如何判断一个字符串是手机号
- 判断邮箱为163或者162的所有邮件地址
- 假如你在写一个爬虫,你得到一个网页的HTML的源码。其中一段是被标签包裹的内容,你想将内容提取出来这时就要用到正则表达式
re模块
import re #re是标准库的模块,并不是第三方的
re.compile()
pattern = re.compile()
简单理解就是该函数会生成一个正则表达式对象,对象内会用多种方法来进行对正则表达式对象的方法调用
re.match方法
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 none,匹配成功则返回一个匹配对象
- 函数语法
re.match(pattern, string, flags=0)
| 参数 | 意义 |
|---|---|
| flags | 控制正则表达式的匹配方式 |
| pattern | 正则表达式 |
| string | 要匹配的字符串(传入的变量) |
- 示例
import re
s = 'mzmm403很棒'
result = re.match('mzmm403',s)
print(result)
>>> <re.Match object; span=(0, 7), match='mzmm403'>
- 内容获取
对象名.group:提取到匹配的内容部分
print(result.group())
>>> mzmm403
re.search方法
与re.match不同的是search不是从头开始进行匹配不到就停止的,而是会从整个当中进行匹配,若有则返回一个匹配对象,若无则返回None
- 函数语法
re.match(pattern, string, flags=0)
| 参数 | 意义 |
|---|---|
| flags | 控制正则表达式的匹配方式 |
| pattern | 正则表达式 |
| string | 要匹配的字符串(传入的变量) |
import re
s = '帅气的mzmm403很棒'
resslt = re.search('mzmm403',s)
print(result)
>>> <re.Match object; span=(3, 10), match='mzmm403'>
#输出匹配到的位置
print(result.span())
>>>(3, 10)
- 内容输出方法和上述match类似