在Notepad ++ regex中查找与模式不匹配的字符串

时间:2018-02-06 18:43:38

标签: regex notepad++

我想使用Notepad ++ regex查找与模式不匹配的所有字符串。

示例输入文本:

  

{~Newline~} {〜缩进,4~} {〜颜色,蓝色〜} 成为或不成为, {~Newline~} {〜缩进,6~}   {〜颜色,绿色〜} {~StartItalic~} {~EndItalic~} 问题。 {~EndDocument~}

{~~}之间的部分是降价代码。其他一切都是纯文本。我想找到所有没有markdown结构的字符串,并在它们前面插入代码{~Plain~}。结果如下:

  

{~Newline~} {〜缩进,4~} {〜颜色,蓝色〜} {〜平原〜} 成为或不成为, {~Newline~} {〜缩进, 6~} {〜颜色,绿色〜} {〜平原〜} {~StartItalic~} {~Plain~} {~Endnaltalic~} {~Plain~~ } 问题。 {~EndDocument~}

markdown语法是开放式的,所以我不能只使用可能的代码列表来处理。

可以{~Plain~}之后插入~},然后删除{~Plain~}之后的每个{~,但这看起来非常笨重。< / p>

2 个答案:

答案 0 :(得分:2)

我希望这适用于当前版本的Notepad ++(现在还没有)。

与:匹配:

Me

然后替换为

~}((?:[^{]|(?:{[^~]))+){~

可能会奏效。第一组应该在关闭~}{~Plain~}$1{~ 和下一个~}之间捕获所有内容。它还会匹配文本中的{~{,只要它们不是开始标记}的一部分。

编辑其他说明,以便您可以更好地修改它:

{~

以下是一个互动示例:regex101 example

答案 1 :(得分:1)

您需要使用否定前瞻。 This regex会匹配所有~}次出现,因此您只需将其替换为~}{~Plain~}

~}(?!{~|$)

如果您不想匹配{~Indent,6~} {~Colour,Green~}中的空格,请使用此选项:

~}(?!{~|$| )