【问题标题】:How to select everything but a specific pattern如何选择除特定模式以外的所有内容
【发布时间】:2014-10-26 10:26:44
【问题描述】:

我正在 sublimetext 中构建一个快速破解(是的,我知道这不是最佳的):

我有以下正则表达式,可以选择 <script></script> 标签中的所有代码:

<script[\s\S]*?\/script>

我如何选择除此之外的所有内容,即 this/all code OUTSIDE script tags 的倒数?

\\\code i want to select
 <script> code i don't weant to select</script>
/// code i want to select

我非常感谢包含和排除 script 标签本身的示例。

【问题讨论】:

  • 当谈到正则表达式时,有时最简单的方法就是最好的方法。您可以尝试编写一个复杂的正则表达式来获取除脚本标签之外的所有内容,但首先获取所有内容可能更容易,然后使用您的工作正则表达式简单地删除脚本标签,留下除脚本标签之外的所有内容脚本标签。
  • 非常正确,我将如何 i) 选择所有后跟 ii) 在同一语句中排除我的模式?谢谢

标签: html regex sublimetext2 selection


【解决方案1】:

打开 DOTALL 模式 (?s) 以使点也匹配换行符。

(?s)^.*?(?=<script>)|(?<=<\/script>).*$

DEMO

【讨论】:

    【解决方案2】:

    使用正则表达式进行 html 操作有很多陷阱。

    以这种情况为例:

    <input type="text" value="<script> code i don't weant to select</script>" />
    

    你如何用正则表达式处理这个问题?

    因此,我建议使用外部库为您完成解析工作。谷歌哪些是你的编程语言可用的。这里有一些我可以推荐的:

    【讨论】:

    • 这没有回答如何在正则表达式中执行此操作的问题
    • 是的,这不能回答问题,但我想指出,在这种情况下,正则表达式可能会导致一些问题,因此建议使用替代方法。
    • @alias51 你运行的是哪种语言?
    • @christophe,谢谢,这应该放在 cmets 中。
    • @avinash,这只是我在 sublimetext 中发现的一个技巧
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多