准备工作
首先导入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)
示例:
因为test_string的开头不能匹配正则,所以返回None
将test_string改为以手机号开头:
则成功返回结果:
re.search方法
re.search 扫描整个字符串并返回第一个成功的匹配。
函数语法:
re.search(pattern, string, flags=0)
示例:
findall
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
函数语法:
findall(pattern, string, flags=0)
示例:
可找到所有的匹配的手机号
re.finditer
finditer和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
函数语法:
re.finditer(pattern, string, flags=0)
示例:
re.compile 函数
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
函数语法:
re.compile(pattern[, flags])