Notepad ++ 和正则表达式找到第二个字符并将其移动到新行

Notepad ++ 和正则表达式找到第二个字符并将其移动到新行

我不熟悉正则表达式,我正在使用 Notepad++ 尝试清理我收到的一些数据。有没有办法找到字符的第二个出现位置并将其放在新行上?

例如

1|name|surname|address|1|name|surname|address

我需要找到数字“1”的第二次出现并将其放在新行上。

1|name|surname|address
1|name|surname|address

答案1

  • Ctrl+H
  • 找什么:\|(?=1\|)
  • 替换为:\n\r\n取决于平台
  • Replace all

解释:

\|      : a pipe, must be escaped because it has special meaning in regex
(?=     : start lookahead, a zero length assertion to be sure we have after
  1     :   the digit 1
  \|    :   a pipe
)       : end lookahead

替代品:

\n      : linebreak for linux files

或者

\r\n    : linebreak for windows
  • 检查环绕
  • 检查正则表达式
  • 请勿检查. matches newline

给定示例的结果:

1|name|surname|address
1|name|surname|address

答案2

在替换对话框中使用它:

  • 找什么 :^(1[^1]*)\|1(.*)$
  • 用。。。来代替 :\1\n1\2

解释:

从行首开始搜索,1后跟任意数量的not-1,后跟|1,后跟任意字符,直到行尾。

替换为与第一个括号内匹配的文本,然后是换行符,1然后是与第二个括号内匹配的文本。

不要忘记确保在“搜索模式”中选中“正则表达式”。

相关内容