【问题标题】:Minimize sub-expression in sublime text regex search and replace最小化崇高文本正则表达式搜索和替换中的子表达式
【发布时间】:2014-03-21 07:49:46
【问题描述】:

我正在尝试替换

<div id="logo"> <a href="index.html"><img src="images/Logo.png" width="205" height="50"  alt="logo"/></a><a class="menu-hider"></a></div>

与

<div id="logo"> <a href="index.html"><img src="{{ asset( 'images/Logo.png' }}" width="205" height="50"  alt="logo"/></a><a class="menu-hider"></a></div>

在崇高的文本中。根据文档,我认为这可行 搜索

src=\"(.*)\"

替换

src=\"{{ asset('$1') }}\"

然而,不是 Sublime 搜索捕获

src="images/Logo.png"

它捕获可能最长的子表达式并找到最后出现的\"

src="images/Logo.png" width="205" height="50"  alt="logo"/></a><a class="menu-hider"

这不是我所期待的第一个。怎么了?

【问题讨论】:

    标签: regex sublimetext2


    【解决方案1】:

    这是因为.* 是贪婪的,这意味着它会尽可能匹配直到达到\"。通过添加?将其更改为惰性形式:

    src=\"(.*?)\"
             ^
    

    regex101 demo

    或使用否定类:

    src=\"([^\"]*)\"
           ^^^^^
    

    regex101 demo

    后者将匹配除" 之外的任何字符,因此它不可能匹配"。

    注意:我不记得在 ST2 中转义引号的要求。我现在无法测试它,但它应该可以正常工作而不会被转义。

    【讨论】:

    • 否定类应该是要走的路! =D 实际上你不需要转义 Sublime Text 中的双引号,对吧?
    • @justhalf 我也相信这一点,但我现在没有安装 ST,现在无法下载(不久前切换了操作系统,我还没有安装所有的东西 :( ). 但是,是的,我会一直选择否定类!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 2017-10-31
    • 1970-01-01
    • 2014-09-07
    相关资源
    最近更新 更多