【问题标题】:Regular expression to match HTML only script tags with type="text/javascript"正则表达式以匹配带有 type="text/javascript" 的仅 HTML 脚本标签
【发布时间】:2012-11-28 16:28:33
【问题描述】:

我正在使用存储在<script type="text/template"> 元素中的 HTML 中的 Backbone 应用程序模板,但这变得令人沮丧,因为 Sublime Text 将模板中的 HTML 着色为 Javascript。我想让编辑器将这些脚本标记视为与普通 HTML 标记相同。

我尝试在 HTML.tmLanguage 上修改 source.js.embedded.html 块中的正则表达式,但作为一个对正则表达式没有经验的人,我做不到。

有什么想法吗?

我认为这是需要修改的 tmLanguage 文件的相关部分:

                <key>begin</key>
                <string>(?&lt;!&lt;/(?:script|SCRIPT))(&gt;)</string>
                <key>captures</key>
                <dict>
                    <key>1</key>
                    <dict>
                        <key>name</key>
                        <string>punctuation.definition.tag.html</string>
                    </dict>
                    <key>2</key>
                    <dict>
                        <key>name</key>
                        <string>entity.name.tag.script.html</string>
                    </dict>
                </dict>
                <key>end</key>
                <string>(&lt;/)((?i:script))</string>

【问题讨论】:

    标签: regex textmate sublimetext2


    【解决方案1】:

    我认为您应该编辑其他值:

            <key>begin</key>
            <string>(?:^\s+)?(&lt;)((?i:script))\b(?![^&gt;]*/&gt;)</string>
            <key>beginCaptures</key>
            <dict>
                <key>1</key>
                <dict>
                    <key>name</key>
                    <string>punctuation.definition.tag.html</string>
                </dict>
                <key>2</key>
                <dict>
                    <key>name</key>
                    <string>entity.name.tag.script.html</string>
                </dict>
            </dict>
    

    并替换(?:^\s+)?(&amp;lt;)((?i:script))\b(?![^&amp;gt;]*/&amp;gt;)

    (?:^\s+)?(&amp;lt;)((?i:script))\b(?![^&amp;gt;]*/&amp;gt;)(?![^&amp;gt;]*type="text/template")

    【讨论】:

    • 谢谢!所以这是可行的,因为整个原始正则表达式是一个零宽度的前瞻,所以它后面可以跟着另一个仍然搜索整个字符串的前瞻?
    • 你几乎是对的。但是整个正则表达式不是零宽度断言,只有这部分 - (?![^&amp;gt;]*/&amp;gt;),并且下一个前瞻断言从与它相同的位置进行搜索。
    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多