正则表达式分组匹配

2018-09-06  本文已影响0人  杜大个

正则表达式如下:
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)

上一篇下一篇

猜你喜欢

热点阅读