python正则表达式01--介绍和re模块的匹配方法

192 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第21天

正则表达式

了解

定义

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符串、及这些特定的字符的组合,组成一个“规则字符串”,这个,这个“规则字符串”用来表达对字符串的一种过滤逻辑

作用

给定一个正则表达式和一个字符串我们可以达到如下目的

  1. 给定的字符串是否符合正则表达式的过滤逻辑(匹配)
  2. 可以通过正则表达式,从字符串中获取我们想要的特定部分

特点

  1. 灵活性、逻辑性和功能性非常强
  2. 可以迅速的用极其简单的方式达到字符串的复杂控制

应用场景(举例)

  1. 如何判断一个字符串是手机号
  2. 判断邮箱为163或者162的所有邮件地址
  3. 假如你在写一个爬虫,你得到一个网页的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类似