我正在尝试使用正则表达式为单词添加单引号,如果在单词,双精度或无引号的表达式中,请注意。我有这个
find . -type f -print0 | xargs -0 sed -i "s/{% url \([^\' >][^\" >][^ >]*\)/{% url \'\1\'/g"
实施例
{% url something foo bar %}
{% url "something" foo bar %}
{% url 'something' foo bar %}
应替换为
{% url 'something' foo bar %}
但是以防万一
{% url "something.else" foo bar %}
它变为
{% url '"something.else"' foo bar %}
单引号无法在单个qoutes中进行转义,而对于双打/双打则不一样吗?我该怎么办?正则表达式很棒,但也很糟糕。谢谢!
原点是Django 1.5中的网址问题
"Django release 1.5: 'url' requires a non-empty first argument. The syntax changed in Django 1.5"
我找到了更改为双引号here的答案。
但是单引号会出现同样的问题,将'word'替换为''word'“。
答案 0 :(得分:1)
以下内容可能适合您:
sed -r "s/{% url ['\"]?([^ '\"]*)['\"]?/{% url '\1'/g"
输入:
{% url something foo bar %}
{% url "something" foo bar %}
{% url 'something' foo bar %}
{% url "something.else" foo bar %}
它会产生:
{% url 'something' foo bar %}
{% url 'something' foo bar %}
{% url 'something' foo bar %}
{% url 'something.else' foo bar %}