Python 包之 re 正则匹配教程分享
什么是正则表达式(Regular Expression)?
正则表达式是一种用来描述、匹配,甚至替换文本的字符串模式。用于处理字符串文本非常方便和高效,是文本处理中最常用的工具之一。
Python 内置了一个用于正则表达式处理的模块——re。
re 包基础用法
1. 正则表达式的基本语法
在 re 中,正则表达式是由元字符和文本字符组成的表达式。
元字符包括(不完全列举):
.
:匹配任意字符^
:匹配字符串的开头$
:匹配字符串的结尾|
:匹配任意一个表达式(或)[]
:匹配括号中的任何一个字符*
:匹配前一个字符出现0或多次+
:匹配前一个字符出现1或多次?
:匹配前一个字符出现0或1次{m}
:匹配前一个字符出现m次{m,n}
:匹配前一个字符出现m到n次
文本字符则是指匹配具体文本的字符,比如数字、字母、中文等。
例子:.?码家.{1,2}
,其中,.
表示可匹配任意字符,?
表示前面的.
字符出现1次或0次,{1,2}
表示匹配前面的码家
文本字符串中的1个字符或2个字符。
2. re 中函数的使用
re 中常用的函数:
re.match(pattern, string[, flags])
:在字符串的开头匹配一个模式,如果不匹配则返回 None。re.search(pattern, string[, flags])
:扫描整个字符串并返回第一个成功的匹配,如果没有匹配返回 None。re.findall(pattern, string[, flags])
:搜索整个字符串,以列表的形式返回所有匹配的子串。re.sub(pattern, repl, string[, count, flags])
:使用后置字符串将字符串中所有匹配的子串替换为 repl。
2.1 re.match
re.match()
从字符串的开头开始匹配模式,如果匹配到,则返回一个匹配对象,可以使用 group()
方法获取匹配到的字符串,否则返回 None。
例子:使用 re.match 匹配字符串开头的数字。
import re
s = '007 James Bond'
m = re.match(r'\d+', s)
if m:
print(m.group())
else:
print('匹配失败')
输出结果为:007
2.2 re.search
re.search()
从整个字符串里搜索匹配模式,如果匹配到,则返回一个匹配对象,可以使用 group()
方法获取匹配到的字符串,否则返回 None。
例子:使用 re.search 匹配字符串中的数字。
import re
s = '007 James Bond'
m = re.search(r'\d+', s)
if m:
print(m.group())
else:
print('匹配失败')
输出结果为:007
2.3 re.findall
re.findall()
从整个字符串里搜匹配模式,返回所有匹配到的子串。
例子:使用 re.findall 匹配字符串中的数字。
import re
s = '007 James Bond'
m = re.findall(r'\d+', s)
if m:
print(m)
else:
print('匹配失败')
输出结果为:['007']
2.4 re.sub
re.sub()
将字符串中匹配到的子串用后置字符串进行替换。
例子:使用 re.sub 将字符串中的数字全部替换成 0
。
import re
s = '007 James Bond'
print(re.sub(r'\d+', '0', s))
输出结果为:000 James Bond
正则表达式实战
1. 匹配手机号码
规则:中国11位手机号码,以1开头,第二位不是0或1,剩下位数是 0~9 的数字。
import re
phone = '13912345678'
pattern = r'^1[^01]\d{9}$'
if re.match(pattern, phone):
print('匹配成功!')
else:
print('匹配失败!')
输出结果为:匹配成功!
2. 匹配日期
规则:日期格式为 “XXXX年XX月XX日”,其中,每个 X 可以为数字、字母或汉字。
import re
date = '2022年11月15日'
pattern = r'^[\u4e00-\u9fa5\w]+年[\u4e00-\u9fa5\w]+月[\u4e00-\u9fa5\w]+日$'
if re.match(pattern, date):
print('匹配成功!')
else:
print('匹配失败!')
输出结果为:匹配成功!
以上就是本次的正则表达式教程分享,希望对大家能有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 包之 re 正则匹配教程分享 - Python技术站