我想编写一个模板标签,用破折号替换空格,制表符,新行,逗号,下划线,以建立一个SEO友好的URL:
re.sub('\s+', '-', str)
这行代码用短划线替换空格:
re.sub('(?<=[,.?!\t\n ])+', '-', str)
这行代码应该用短划线取代?<=[,.?!،
和空格,但它不会。
答案 0 :(得分:5)
您是否考虑过使用内置的slugify
过滤器?
您的第二个表达式的问题是您使用了正面的后观(?<=
)。
“零宽度正面观察。如果前瞻中的图案可以是一个位置匹配 匹配在该位置的结尾(即该位置的左侧)。
以下可能是您尝试做的事情:
re.sub('[,.?!\t\n ]+', '-', s)
这是用一个破折号替换任何字符序列,.?!\t\n
。