正则表达式中(?:)、(?=)以及(?!)等的用法

out = re.findall(r'\d+(?=abc)',"1abc") ## 只抽取数字,并且该数字后面跟的字符是"abc"
print(out)
out1 = re.findall(r'\d+(?!abc)',"1abf") ## 只抽取数字,并且该数字后面跟的字符是"abc"
print(out1)
out3 = re.findall("A(?:\d{1,2}月)?D", "啊啊A22月DtttADgggg") ## 目的是抽取以A开头和D结尾的字符串
print(out3)

运行结果:
[‘1’]
[‘1’]
[‘A22月D’, ‘AD’]
以此应用到日期的识别上:

## 2003年8、9月
## 2010年9、10、11月期间
re1 = "\d{4}年(?:\d{1,2}、)*\d{1,2}月(?:期间)?"

上面两种日期的写法都可以借用re1进行识别

## 2012年10月至2013年
## 2008年初至2009年6月27日
## 2011年中至2014年5月底
re2 = "\d{4}年(?:\d{1,2}月)?(?:\d{1,2}日)?(?:[初中末底])?至\d{4}年(?:\d{1,2}月)?(?:\d{1,2}日)?(?:[初中末底])?"

re2用于识别上面三种日期
参考文献:
http://tool.oschina.net/uploads/apidocs/jquery/regexp.html
https://blog.csdn.net/ledavince/article/details/80339009

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值