我想编写一个模板标签来用破折号替换空格、制表符、换行符、逗号、下划线,以制作一个 SEO 友好的 URL:
re.sub('\s+', '-', str)
这行代码用破折号替换空格,并且:
re.sub('(?<=[,.?!\t\n ])+', '-', str)
这行代码应该?<=[,.?!،
用破折号替换和空格,但事实并非如此。
您是否考虑过使用内置slugify
过滤器?
您的第二个表达式的问题是您使用的是积极的后视(?<=
)。
来自正则表达式.info:
“零宽度正向后视。如果前瞻内的模式可以匹配到该位置(即该位置的左侧)结束,则匹配该位置。
以下可能是您尝试执行的操作:
re.sub('[,.?!\t\n ]+', '-', s)
,.?!\t\n
这是用单个破折号替换任何字符序列。