如何用短划线替换所有空格,制表符,换行符,逗号和下划线?

问题描述:

我想写一个模板标签来代替空格,制表符,新行,逗号,破折号强调做一个SEO友好的URL:如何用短划线替换所有空格,制表符,换行符,逗号和下划线?

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

这行代码与破折号代替空格和:

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

这行代码应该用短划线代替?<=[,.?!،和空格,但它没有。

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

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

regular-expressions.info

“零宽度正回顾后的位置处匹配,如果先行内的图案可以是 在该位置一致结束(即到该位置的左侧)

以下是可能是你所要做的:

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

这replacin g带有单个短划线的任何字符序列,.?!\t\n

+0

是的,但在我的情况下,我不能使用它,看看这个:http://stackoverflow.com/questions/11455812/use-slugify-in-template/11456912#comment15163328_11456912 – 2012-07-14 09:58:52

+0

好的,以及,无论如何都提供了固定的正则表达式:) – Hamish 2012-07-14 10:05:57