python 正则表达式 re模块

142 阅读1分钟

准备工作

首先导入re 模块

import re

拿手机号为例

手机号正则为:

以1开头 第二个数字为(345789)中的一个 后9位全为数字

pattern= r'1[345798]\d{9}'    #手机号正则  字符串前面加r是为了防止转义字符影响正则表达式

需要匹配的字符串为:

test_string='a13335560302bb133123456789dd&(*(*&139301798988'

re.match 函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 none。

函数语法

re.match(pattern, string, flags=0)

示例:

image.png

因为test_string的开头不能匹配正则,所以返回None

image.png

将test_string改为以手机号开头:

image.png

则成功返回结果:

image.png

re.search方法

re.search 扫描整个字符串并返回第一个成功的匹配。

函数语法

re.search(pattern, string, flags=0)

示例:

image.png

image.png

findall

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。

注意:  match 和 search 是匹配一次 findall 匹配所有。

函数语法

findall(pattern, string, flags=0)

示例:

image.png

可找到所有的匹配的手机号

image.png

re.finditer

finditer和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

函数语法

re.finditer(pattern, string, flags=0)

示例:

image.png

image.png

re.compile 函数

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

函数语法

re.compile(pattern[, flags])

image.png

image.png