正则表达式-零宽断言

代码 功能
(?=exp) 匹配后面是exp的位置
(?<=exp) 匹配前面是exp的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置

零宽

零宽说的是这个表达式不匹配任何字符,只匹配一个位置

断言

我要匹配的字符串一定要满足这个条件

一下采用python的re模块举几个例子帮助理解

(?=exp)

text = '1taylor2 3swift4'
s = re.findall(r'[a-z]+(?=3)', text)
print(s)
------
['taylor']

大白话: 我要匹配这样的字符串,它由小写字母构成,并且他后面跟着一个3

(?<=exp)

text = '1taylor swift2'
s = re.findall(r'(?<=\b)[a-z]+', text)
print(s)
------
['swift']

匹配前面为\b 的小写英文单词

(?!exp)

text = 'I dont give a shit.'
s = re.findall(r'\w+(?!\.)', text)
print(s)
------
['I', 'dont', 'give', 'a', 'shi']

匹配的字符串后面不能有.

(?<!exp)

text = 'dragon1 dragon2'
s = re.findall(r'(?<!\s)\w+', text)
print(s)
------
['dragon1', 'ragon2']

匹配前面不是空白符的单词


Reference:deerchao

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 捕获### (exp):匹配并且捕获exp表达式的内容,捕获内容存档在全局变量$1-$99里面。(?<name>e...
    YongpingZhao阅读 2,844评论 0 0
  • 在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了。...
    SecondRocker阅读 10,509评论 0 5
  • 注:本篇文章只为方便查看,特此保留,如有冒犯,敬请谅解!!! 本文目标 30分钟内让你明白正则表达式是什么,并对它...
    阿杰Alex阅读 5,333评论 0 10
  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 6,459评论 0 9
  • http://www.jb51.net/tools/zhengze.html 正则表达式30分钟入门教程 版本:v...
    nullleaf阅读 3,715评论 0 2