python 括号表达式_PYTHON正则 复杂表达式 括号 非贪心 踩坑小记

实验一

如下,对一个txt中的邮箱进行匹配。

首先是txt='Yang.Yuelin@saicmotor.com'

import re

import pprint

txt='Yang Yuelin@saicmotor.com'

a=re.compile(r'[\w\W.]+(@saicmotor\.com',re.I)

s=a.search(txt)

pprint.pprint(s)

s=Yang Yuelin@saicmotor.com

这里要注意的是在【】中‘.’不需要转义符,但是在【】外需要转义符。

import re

import pprint

txt='Yang.Yuelin@saicmotor.com@saicmotor.com'

a=re.compile(r'([\w\W.]+?(@saicmotor\.com))',re.I)

s=a.search(txt)

pprint.pprint(s)

原因在于[\w\W.]+将第一个@saicmotor.com匹配进去了,这个问题困惑了我1个小时。

实验三

解决了贪心的问题,开始匹配多个人的邮箱。

txt='Yang Yuelin@saicmotor.com zhu ling@saicmotor.com'

import re

import pprint

txt='Yang.Yuelin@saicmotor.com zhu.ling@saicmotor.com'

a=re.compile(r'[\w\W.]+?(@saicmotor\.com)',re.I)

s=a.findall(txt)

print(s)

得到的结果是['@saicmotor.com', '@saicmotor.com']

what?!

原因在于那个括号,去掉括号就可以,或者在整个正则表达式外面加括号,因为结果只反馈括号里的内容,当然加多个括号也是可以的。如下:

a=re.compile(r'([\w\W.]+?(@saicmotor\.com))',re.I)

a=re.compile(r'[\w\W.]+?@saicmotor\.com',re.I)

处理带方括号/中括号的方法:

s="EpmCrg_[1-23,32]"

p1 = re.findall('(?<=\\[).+(?=\\])', s)

p2=re.findall(".+(?=\\[)",s)

print(p1[0])

print(p2[0])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值