代码之家  ›  专栏  ›  技术社区  ›  Green Cloak Guy

Regex-替换非unicode字符,但仅在某些模式中

  •  0
  • Green Cloak Guy  · 技术社区  · 6 年前

    é , ç 等等)。当我在自己的电脑上浏览时,把这些字符放在文件名中似乎很管用,但django不喜欢,拒绝呈现它们。我想一个快速的解决方案就是用下划线或者其他东西替换regex,但是只有在Django有问题的url中。

    我要解析的字符串-自动生成的模板-看起来像这样:

    desc = """...blah blah blah <a href="{% url 'myproject:do_thing'  arg_name='ñôt-unìcodé' %}">Link Text Ñôt Unìcodé</a> blah blah blah ..."""
    

    ñôt-unìcodé __t-un_cod_ ,离开时 Ñôt Unìcodé 原封不动。我试过的是:

    re.findall(r"'arg_name='(([^'])+?)'", desc)
    

    re.sub :

    ['ñ', 'ô', 't', '-', 'u', 'n', 'ì', 'c', 'o', 'd', 'é', ...]
    

    但我最终得到的却是整个字符串和最后一个字母:

    [('ñôt-unìcodé', 'é'), ...]
    

    我在这里有什么误会?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Julio    6 年前

    你正在添加 + 对于捕获组: ([^'])+

    所以在这里 [('ñôt-unìcodé', 'é'), ...]

    试着改用 arg_name='([^']+)' 甚至 arg_name='[^']+'