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

Asm*_*ari 3 python regex django

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

re.sub('\s+', '-', str)
Run Code Online (Sandbox Code Playgroud)

这行代码用dash替换空格:

re.sub('(?<=[,.?!\t\n ])+', '-', str)
Run Code Online (Sandbox Code Playgroud)

这行代码应该?<=[,.?!?用dash 替换和替换,但事实并非如此.

Ham*_*ish 5

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

你的第二个表达式的问题是你正在使用一个积极的lookbehind(?<=).

来自regular-expressions.info:

"零宽度正向后观.如果前瞻中的图案可以匹配在该位置结束(即该位置的左侧),则匹配位置.

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

re.sub('[,.?!\t\n ]+', '-', s)
Run Code Online (Sandbox Code Playgroud)

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