简单负项先行处理

2024-10-03 11:15:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我明白了:

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个qs匹配,因为否定的前瞻应该看到,在单词qeel中,例如,q后面的字母是而不是u

有什么好处?你知道吗


Tags: andimportreforquick单词printmatches
1条回答
网友
1楼 · 发布于 2024-10-03 11:15:40

是的

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


没有=,也就是说。否则,你就不想把=u放在前面,这对你的q来说是正确的。一般来说,正的前瞻是通过(?=...)形成的,而负的前瞻只是(?!...)

旁注:行尾不需要;,除非您希望将所有内容都写在一行中,该行不被视为“Pythonic”,但完全有效:
import re; print(re.findall(r"q(?!u)", "qqq queen quick qeel"))

相关问题 更多 >