简单的否定前瞻

时间:2017-11-17 20:52:26

标签: python regex regex-negation

我明白了:

import re; 
print re.findall(r"q(?=u)", "qqq queen quick qeel")
> ['q', 'q'] # for queen and quick

但我不明白:

import re; 
print re.findall(r"q(?!=u)", "qqq queen quick qeel")
> ['q', 'q', 'q', 'q', 'q', 'q'] # every q matches

我预计只有4个q匹配,因为负向前瞻应该会在单词 qeel 中看到,例如,q之后的字母不是 u。

是什么给出了?

1 个答案:

答案 0 :(得分:2)

import re 
print(re.findall(r"q(?!u)", "qqq queen quick qeel"))
#                  ---^---
# ['q', 'q', 'q', 'q']

<小时/> 没有=,那就是。否则,您不希望前面有=u,这对q所有都是正确的。一般来说,通过(?=...)形成正向前瞻,而负面前瞻只是(?!...) Sidenote :行末不需要;,除非你想把所有内容写在一行不被认为是&#34; Pythonic&#34;但完全有效:

import re; print(re.findall(r"q(?!u)", "qqq queen quick qeel"))