Notepad++ - 如何搜索(每行)直到某个字符(在该行中)?

Notepad++ - 如何搜索(每行)直到某个字符(在该行中)?

我有几行看起来像

\node[ ... Some code here ... { ... some more code
\node[ ... Some code here ... { ... some more code
\node[ ... Some code here ... { ... some more code

在每一行中,我想用我自己的代码替换从[到的代码。{

  • \node始终位于每行的开头。

  • {不是在行的末尾。

我已经找到(在这里)并尝试了类似^\\node.*\{或的东西,但两者都产生了同样不令人满意的结果:整个代码直到文档中的\\node.*\{最后一段都被标记。{

答案1

实际上,启用“环绕”功能完全没问题。事实上,我建议你这样做。

由于片段保证位于行首,因此您可以使用插入符号 ( ^) 锚点。

以下对我有用:

查找:^\\node\[[^{]*\{;替换为:\\node[test{

锚点^到行首。\\node\[与文本匹配\node[,在对特殊字符进行转义后。[^{]*抓取除开括号之外的每个字符。(请注意,这里{不需要转义,因为它属于字符类。)然后\{抓取开括号本身。


如果 ... Some code here ... 可以包含括号:

查找:^\\node\[.*\{([^{]*)$;替换为:\\node[test{$1

第一部分相同。然后,.*​​将匹配尽可能多的字符。\{匹配一个左括号,然后([^{]*)$匹配并捕获所有字符,直到行尾。由于[^{]指定了,因此它不会匹配任何左括号,因此前一个必须匹配行中的\{最后一个。{

答案2

在“搜索/替换”对话框中,使用“查找内容”:节点[。*{并替换为:节点[测试{成功替换...这里有一些代码...测试每行均如此。

您必须指定以下选项:

  • 不要勾选“环绕”
  • 勾选“正则表达式”
  • 不要勾选“.匹配换行符” 在此处输入图片描述

相关内容