3

我想编写一个模板标签来用破折号替换空格、制表符、换行符、逗号、下划线,以制作一个 SEO 友好的 URL:

re.sub('\s+', '-', str)

这行代码用破折号替换空格,并且:

re.sub('(?<=[,.?!\t\n ])+', '-', str)

这行代码应该?<=[,.?!،用破折号替换和空格,但事实并非如此。

4

1 回答 1

5

您是否考虑过使用内置slugify过滤器?

您的第二个表达式的问题是您使用的是积极的后视(?<=)。

来自正则表达式.info

“零宽度正向后视。如果前瞻内的模式可以匹配到该位置(即该位置的左侧)结束,则匹配该位置。

以下可能是您尝试执行的操作:

re.sub('[,.?!\t\n ]+', '-', s)

,.?!\t\n这是用单个破折号替换任何字符序列。

于 2012-07-14T09:56:45.603 回答