如何将所有的空格、制表符、换行符、逗号和下划线替换为破折号?

3
我想编写一个模板标签,将空格、制表符、换行符、逗号和下划线替换为破折号,以创建一个更适合SEO的URL。
re.sub('\s+', '-', str)

这行代码将空格替换为破折号并:

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

这行代码应该将?<=[,.?!،和空格替换为破折号,但它没有达到预期效果。

1个回答

5

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

您第二个表达式的问题在于您使用了正向后顾(?<=)。

来自regular-expressions.info

“零宽度正向后顾。如果可以匹配括号内的模式并以该位置结束,则在该位置进行匹配(即在该位置左侧)。”

以下可能是您想要做的:

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

这将用一个短横线替换任何字符序列,.?!\t\n


是的,但在我的情况下,我不能使用它,请看这个链接:https://dev59.com/v2gu5IYBdhLWcg3wRk9h#YFcEoYgBc1ULPQZF3ty1 - Asma Gheisari
好的,无论如何都修复了上面提供的正则表达式 :) - Hamish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接