在开源django应用程序中注意到这个urls.py定义。
r'^(?P<username>(?!signout|signup|signin)[\.\w]+)/$
如何解释(?!signout|signup|signin)
组件?
我理解P<username>
,但我不确定(?!signout|signup|signin)
的用途是什么?
答案 0 :(得分:2)
这是一个NOT运算符。如果文字不是signout
,signup
或signin
,则匹配。
参见Python的re module documentation:
(?!...)
如果
...
下次匹配,则匹配。这是一个负面的先行断言。例如,Isaac (?!Asimov)
只有在'Isaac '
后面没有'Asimov'
时才匹配{。}}。