0

我在我的代码编辑器(崇高文本)中使用以下正则表达式来搜索 ASP.NET 注释。

<%--.*(\n.*)*--%>

我希望这个正则表达式在找到第一个后立即停止向前看--%>。但它一直在寻找,直到--%>找到最后一条评论。我有这个想法,我必须使用某种标志让它在第一次停止时立即停止,--%>但我无法弄清楚。

谁能告诉我如何修改这个正则表达式?

更新

我忘了发布一些示例标记。这里是:

        <div class="modal-footer">
        <%--<button class="btn" data-dismiss="modal">
            Close</button>
        <button id="btnAddCountry" class="btn btn-primary" data-dismiss="modal">
            Save changes</button>--%>
    </div>
</div>
<div class="row-fluid">
    <div class="span12">
        <div class="box paint_hover">
            <div class="title">
                <h3>Sale Voucher</span>
                </h3>
            </div>
            <div class="content">
                <ul id="tabExample1" class="nav nav-tabs">
                    <li class="active"><a id="lnkAddEditVoucher" href="#AddEditVoucher" data-toggle="tab">Add/Update Sale Voucher</a></li>
                    <li><a id="lnkViewVouchers" href="#ViewVouchers" data-toggle="tab">Search Sale Voucher</a></li>
                    <%--  <li><a id="lnkViewParties" href="#ViewParties" data-toggle="tab">Search Parties</a></li>--%>
                </ul>

我只想匹配第一条评论而不是第二条评论。

4

2 回答 2

9

您需要使*量词不贪婪。通常这是通过?在它们之后添加一个来完成的,例如,.*?而不是仅仅.*.

我还稍微简化了正则表达式。Sublime Text 支持在(?s)模式开头的修饰符以使点匹配甚至换行符:

(?s)<%--.*?--%>

如果您更喜欢明确匹配换行符:

<%--(.|\n)*?--%>
于 2013-11-12T13:29:04.710 回答
1

您似乎遇到的问题是您使用 的贪婪版本.*,它匹配任何东西(包括--%>)。尝试<%--.*?(\n.*?)*?--%>改用使其不贪婪。

于 2013-11-12T13:30:10.437 回答