正则表达式-零宽断言
代码 | 功能 |
---|---|
(?=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