我有以下用django格式编写的urls:
{% url 'wap:client:goods_category' %}我想把它们替换成:
/wap/client/goods-category.html我正在使用jetbrains,并希望用regex替换它们。
因此,我编写了以下模式:
\{% url '([^']+):([^']+):([^']+)' %\}恢复:
/$1/$2/$3.html问题:
这很有帮助,但下划线不能替换为破折号。
页面名称中可能有零个或多个下划线。
因此也曾尝试过:
\{% url '([^']+):([^']+):([^'\_]+\_)*([^']+)' %\}这确实匹配所有的页面名称段,但我不知道有多少段匹配。
独处?请帮帮我!
发布于 2015-01-21 04:35:04
可以在repl参数re.sub()中使用可调用的
>>> import re
>>> def to_slashes(s):
... return s.replace(':', '/').replace('_', '-') + '.html'
...
>>> url = "{% url 'wap:client:goods_category' %}"
>>> re.sub("{% url '([^']+)' %}", lambda x: to_slashes(x.group(1)), url)
'wap/client/goods-category.html'
>>> url = "{% url 'wap:client:goods:goods_category' %}"
>>> re.sub("{% url '([^']+)' %}", lambda x: to_slashes(x.group(1)), url)
'wap/client/goods/goods-category.html'
>>> https://stackoverflow.com/questions/28058542
复制相似问题