Python正则表达式 分组 用括号()

在这里插入图片描述
示例;匹配座机号码
一般都是 区号-电话号码 010-12345678
其中区号3位或4位 {3,4}
电话号码 5位到8位 {5,8}

import re
pattern = r'\d{3,4}-[1-9]\d{4,7}$'    
s1 = '010-23232332'
o = re.match(pattern,s1)      # match方法
print(o)
m = re.search(pattern,s1)     # search方法 都行啊
print(m)
print(o.group())              # group方法获取电话号码

现在分组,加上(),pattern改动如下

import re
pattern = r'(\d{3,4})-([1-9]\d{4,7}$)'
s1 = '010-23232332'
o = re.match(pattern,s1)       
print(o)
m = re.search(pattern,s1)     
print(m)
print(o.group())           # 获取         
print(o.groups())          # 放到元组里面了,

#运行结果如下
010-23232332
('010', '23232332')    #groups()的作用

若在group()里加上区号,group(1)等等,则获得分组的内容,
在这里插入图片描述

用group(1)时,一定要先对pattern分组加括号!
正则表达式注意,输入字符时,一定在英文状态下输入!

匹配网页标签
下面这段代码,匹配两个网页内容,s2是错误的,但也能匹配

import re
pattern = r'<.+><.+>.+</.+></.+>'
s1 ='<html><head>heda部分</head></body>'
s2 ='<html><title>heda部分</head></body>'
o = re.match(pattern,s1)
o2 = re.match(pattern,s2)
print(o,o2,sep='\n')

所以要改进匹配规则,要让标签两头相同。所以考虑到用分组!

pattern = r'<(.+)><(.+)>.+</\2></\1>'  # 前面分好组,后面用数字形式取用。

这样就可以把不合规则的过滤掉了
这个方法用数字,来取用。还可以用别名的方式:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值