【问题标题】:Regular expression to select from X to Y从 X 到 Y 选择的正则表达式
【发布时间】:2011-11-24 13:21:24
【问题描述】:

我有以下 HTML:

<Some Html above....../>
<!--Template Start -->
<div>
<p>Some text</p>
...
<div>
<!--Template End -->
<Some Html below/>

现在我如何编写正则表达式来匹配从 模板开始 到的所有文本 模板结束

这里说 notepad++ 使用 Scintilla 引擎。 Notepad++ non-greedy regular expressions

【问题讨论】:

  • 你的意思是&lt;!--Template Start --&gt;((.|\n)*)&lt;!--Template End --&gt;

标签: regex expression notepad++


【解决方案1】:

很遗憾,Notepad++ 不支持在正则表达式模式下本地匹配换行符 (\r\n)。它仅在扩展模式下支持匹配换行符。 但是它确实支持在两种模式下插入换行符。

要达到预期的效果,您可以采取一种变通方法:

  1. 在扩展模式下删除所有换行符(将 \r\n 替换为空),这样您就有了单行符。
  2. 在正则表达式模式下执行正则表达式操作。
  3. 在扩展模式下重新添加换行符(例如,将 &lt;div&gt; 替换为 &lt;div&gt;\r\n 等)或正则表达式模式。

我在某处读到 N++ 的 PythonScript 插件增加了对正则表达式的更好支持,但我没有检查过。

【讨论】:

    【解决方案2】:

    假设没有嵌套模板:

    <!--Template Start -->(.*?)<!--Template End -->
    

    注意打开模式 DOT_ALL 以覆盖换行符。

    【讨论】:

    • 如何打开模式 DOT_ALL,因为我是正则表达式的新手。
    • @user637307 您使用哪种语言?
    • 我正在使用 Notepad++ 文本编辑器,我认为它是用 Visual C++ 编写的(使用 Microsoft Visual Studio)
    • 不知道Notepad++支持哪种正则表达式。你也可以试试((.|\n)*?) 而不是(.*?)
    • 这里说它使用 Scintilla 引擎。 stackoverflow.com/questions/3971052/…
    【解决方案3】:
    <!--Template Start -->(.*?)<!--Template End -->
    

    s 修饰符应该打开。

    【讨论】:

    • @Howard 实际上 4 秒 :)
    • 如何切换s修饰符,我是正则表达式的新手。
    • @user637307 你使用什么编程语言?
    • 我正在使用 Notepad++ 文本编辑器,我认为它是用 Visual C++ 编写的(使用 Microsoft Visual Studio)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    相关资源
    最近更新 更多