Django过滤器与奇怪的正则表达式

时间:2013-04-20 23:25:16

标签: python regex django django-models

通过一些遗留代码,我在模型过滤器中偶然发现了这个正则表达式:

"[[:<:]](%s)[[:>:]]" % value

我知道内部方括号与文字方括号相匹配,但我找不到对冒号和lt / gt的任何引用。

这应该匹配什么?

1 个答案:

答案 0 :(得分:2)

正如你问题的评论者指出的那样,这可能是一个错误,或者有人在扯你的链条。我无法想象它是如何有用的。但要明确回答你的问题,这里有一些它会匹配的东西。这假设Python已将%s替换为foo

[]foo:]
:]foo:]
<]foo:]
<]foo>]
[]foo>]
[]foo:]
[]foo[]

也许这是(失败的)尝试找到类似<foo>:foo:

的内容

正则表达式的解释(我删除了多余的重复:,似乎表明这是一个错误,或者不打算使用Python的re运行):< / p>

[[:<] # match one `[` or `:` or `<`
]     # one literal right bracket
(     # open capture group
foo   # literal string `foo`, or whatever replaced `%s`
)     # close capture group
[[>:] # match one `[` or `>` or `:` 
]     # one literal right bracket

这一切意味着什么?你的猜测和任何人一样好。