正则表达式-零宽断言

时间:2023-02-10 06:19:44

正则表达式-零宽断言

代码 功能
(?=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']

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

(?

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

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


Reference:deerchao