我想使用Notepad ++ regex查找与模式不匹配的所有字符串。
示例输入文本:
{~Newline~} {〜缩进,4~} {〜颜色,蓝色〜} 成为或不成为, {~Newline~} {〜缩进,6~} {〜颜色,绿色〜} {~StartItalic~} {~EndItalic~} 问题。 {~EndDocument~}
{~
和~}
之间的部分是降价代码。其他一切都是纯文本。我想找到所有没有markdown结构的字符串,并在它们前面插入代码{~Plain~}
。结果如下:
{~Newline~} {〜缩进,4~} {〜颜色,蓝色〜} {〜平原〜} 成为或不成为, {~Newline~} {〜缩进, 6~} {〜颜色,绿色〜} {〜平原〜} {~StartItalic~} {~Plain~} 是 {~Endnaltalic~} {~Plain~~ } 问题。 {~EndDocument~}
markdown语法是开放式的,所以我不能只使用可能的代码列表来处理。
我可以在{~Plain~}
之后插入~}
,然后删除{~Plain~}
之后的每个{~
,但这看起来非常笨重。< / p>
答案 0 :(得分:2)
我希望这适用于当前版本的Notepad ++(现在还没有)。
与:匹配:
Me
然后替换为
~}((?:[^{]|(?:{[^~]))+){~
可能会奏效。第一组应该在关闭~}{~Plain~}$1{~
和下一个~}
之间捕获所有内容。它还会匹配文本中的{~
和{
,只要它们不是开始标记}
的一部分。
编辑其他说明,以便您可以更好地修改它:
{~
以下是一个互动示例:regex101 example
答案 1 :(得分:1)
您需要使用否定前瞻。 This regex会匹配所有~}
次出现,因此您只需将其替换为~}{~Plain~}
:
~}(?!{~|$)
如果您不想匹配{~Indent,6~} {~Colour,Green~}
中的空格,请使用此选项:
~}(?!{~|$| )