Django テンプレート タグに取り組んでいると、文字列を取り、それを CSS 識別子に変換して、html 要素のクラス属性の一部にできるようにする必要があることに気付きました。問題は、文字列にスペースが含まれている可能性があるため、CSS 識別子としては役に立たなくなり、句読点も含まれる可能性があることです。
私の考えでは、正規表現を使用して良い部分を切り取り、それらを元に戻すことでしたが、繰り返しグループパターンを表現する方法がわかりません. これが私が持っているものです
to_css = re.compile(r"[^a-z_-]*([a-z0-9_-]+[^a-z0-9_]*)+", re.IGNORECASE)
@register.filter(name='as_css_class')
def as_css_class(value):
matches = to_css.match(value)
if matches:
return '-'.join(matches.groups())
return ""
これを行うと問題が発生します。
as_css_class("Something with a space in it")
そしてあなたは得る
'it'
+ が (グループ) に適用されることを望んでいましたが、明らかにそれは私が望むことをしません。