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

时间:2012-07-14 09:52:27

标签: python regex django

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

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

这行代码用短划线替换空格:

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

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

1 个答案:

答案 0 :(得分:5)

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

您的第二个表达式的问题是您使用了正面的后观(?<=)。

来自regular-expressions.info

  

“零宽度正面观察。如果前瞻中的图案可以是一个位置匹配   匹配在该位置的结尾(即该位置的左侧)。

以下可能是您尝试做的事情:

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

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