【问题标题】:(Notepad++) Find strings above a certain length between two substrings(Notepad++) 在两个子字符串之间查找超过一定长度的字符串
【发布时间】:2018-06-08 10:15:57
【问题描述】:

有谁知道是否有办法找到任何长度超过一定长度且介于 2 个子字符串之间的文本?

例如:

<element><![CDATA[Hi, I'm a message.]]></element>

我需要在 CDATA[ ] 中找到任何超过 136 个字符的文本字符串。 字符串也可以多行:

<element><![CDATA[Hi, I'm a message,
and I'm on 2 lines.]]></element>

【问题讨论】:

    标签: notepad++


    【解决方案1】:

    选择搜索模式Regular expression. matches newline 运行以下搜索

    <\!\[CDATA\[(?:(?!\]\]>).){137,}
    

    说明: &lt;\!\[CDATA\[ 是一个文字,带有转义,用于 CDATA 标记的开头

    (?: ... ) 是非捕获组,这里是逻辑括号

    (?!\]\]&gt;). 表示只要这里没有文字 ]]&gt; 匹配任何字符

    {137,} 说这样做 137 次(至少)

    因此,这将命中任何您想要大小的CDATA

    您可能想在末尾添加一个\]\]&gt; 来吃结束标签,但是匹配结束标签不是必需的(假设文档格式正确)

    这会将新行视为字符,如果这是一个问题,您可以将 . 替换为 (?:.\n*) 以减少这种影响

    【讨论】:

    • 感谢您的回复和解释。它并没有完全奏效,完整的搜索字符串得到 0 个结果。 ").)" 自己查找除 CDATA[] 的右方括号之外的任何字符,但是将这些放在一起得到 0 个结果
    • 我在您的搜索字符串的帮助下找到了答案!我不得不把“。”在 "(?:(?!]]>).)" 的开头得到这个:&lt;\!\[CDATA\[(?:.(?!\]\]&gt;)){137,}。感谢您提供了如此详尽的答案,以至于不了解 notepad++ 搜索词的人能够弄清楚!
    猜你喜欢
    • 2018-04-14
    • 1970-01-01
    • 2014-12-07
    • 2020-03-19
    • 2011-03-23
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多