首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用regex替换重复的部件字符串?

如何用regex替换重复的部件字符串?
EN

Stack Overflow用户
提问于 2015-01-21 02:19:27
回答 1查看 39关注 0票数 0

我有以下用django格式编写的urls:

代码语言:javascript
复制
{% url 'wap:client:goods_category' %}

我想把它们替换成:

代码语言:javascript
复制
/wap/client/goods-category.html

我正在使用jetbrains,并希望用regex替换它们。

因此,我编写了以下模式:

代码语言:javascript
复制
\{% url '([^']+):([^']+):([^']+)' %\}

恢复:

代码语言:javascript
复制
/$1/$2/$3.html

问题:

这很有帮助,但下划线不能替换为破折号。

页面名称中可能有零个或多个下划线。

因此也曾尝试过:

代码语言:javascript
复制
\{% url '([^']+):([^']+):([^'\_]+\_)*([^']+)' %\}

这确实匹配所有的页面名称段,但我不知道有多少段匹配。

独处?请帮帮我!

EN

回答 1

Stack Overflow用户

发布于 2015-01-21 04:35:04

可以在repl参数re.sub()中使用可调用的

代码语言:javascript
复制
>>> 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'
>>> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28058542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档