正则表达式分组匹配
正则表达式如下:
first desc
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组
\num 引用分组num匹配到的字符串
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串
示例1:| 的用法
匹配1到100之间的数字
ret = re.match("[1-9]?\d$|100","8")
print(ret.group()) # 8
ret = re.match("[1-9]?\d$|100","78")
print(ret.group()) # 78
ret = re.match("[1-9]?\d$|100","08")
print(ret.group()) # 不是0-100之间
ret = re.match("[1-9]?\d$|100","100")
print(ret.group()) # 100
示例2:( )
需求:匹配出163、sina、qq邮箱
-- coding:utf-8 --
import re
emails = ['ljhyigehaoren@sina.com','22958081@qq.com','asncswncl@qq.cn','asncswncl@163.cn',]
for i in emails:
ret = re.match('[a-z0-9]+@(sina|qq|163).(com|cn)',i)
if ret:
print(ret,i)
\num 的用法
ret = re.match('<(\w+)>\d+<\1>','<html>123456<html>')
ret = re.match(r'<(\w+)>\d+<\1>','<html>123456<html>')
print(ret.group(),ret.groups())
(?P<name>)和(?P=name)的用法
ret = re.findall('<(?P<name1>\w+)>\d+<(?P=name1)>','<html>123456<html>')
ret = re.match(r'<(\w+)>\d+<\1>','<html>123456<html>')
print(ret)