java零宽断言_正则表达式-零宽断言

[toc]

一、零宽断言-介绍

零宽断言,它匹配的内容不会提取,其作用是在一个限定位置的字符串向前或向后进行匹配查找。

1.1、应用场景

排除查找,查找不含有某段字符串的行

包含查找,查找含有某段字符串的行

二、断言的分类

2.1、正先行断言

什么是正先行断言,就是在字符串相应位置之前进行查找匹配,使用 (?=exp) 匹配exp前面的位置。

import re

str = 'abcgwcab'

pattern = 'bc(?=gw)'

result = re.search(pattern,str)

print(result.group())

# 输出结果

bc

解析:首先查找字符串”abcgwcab”中gw位置,断言为真,然后再匹配 bc,然后再向后匹配。

example:

pattern = 'bc(?=gw)ca'

# 匹配失败,因为找到了 gw 的位置后,断言为真,再向前匹配 bc ,再然后是从 bc 处进行匹配是 gwca ,所以会失败。

pattern = 'bc(?=gw)gwca'

# 匹配成功,输出结果

bcgwca

2.2、反先行断言

什么是反先行断言,使用 (?!exp) 匹配后面跟的不是exp。

import re

str = 'abcgwcab'

pattern = 'bc(?!ww)gw'

result = re.search(pattern,str)

print(result.group())

# 输出结果

bcgw

解析:首先判断字符串是否包含bc,然后判断其后面不是ww,断言为真,然后从 bc 处进行匹配 gw。

2.3、正后发断言

什么是正后发断言,就是在字符串相应位置之后进行查找匹配, (?<=exp) 匹配exp后面的位置

import re

str = 'abcgwcab'

pattern = '(?<=gw)ca'

result = re.search(pattern,str)

print(result.group())

# 输出结果

ca<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值