0

我有一个这样的文本文件:

(A) foo
(B) bar
(B) eggs
x spam

(A)、(B)等是优先标签。它们被更改,之后对文件进行排序,以使带有 prio (A) 的行位于顶部。我想知道是否有一个单行正则表达式搜索和替换,它将只替换第一个标签(A),第一个(B)等等,用 CR/LF [标签],所以文件看起来像这样:

(A) foo

(B) bar
(B) eggs

x spam

制作执行此操作的脚本很容易。但是,在 Notepad++ 中可作为宏调用的正则表达式将是完美的。有什么想法吗?

4

1 回答 1

3

这样的事情应该这样做:

代替

(\([^)]*\))(.*\r\n)(?!\1)

\1\2\r\n

解释:

[^)]*表示零个或多个非).
\([^)]*\)- 只是在括号中得到一些东西(你需要逃避()with \)。
将它包围()存储在第一组中(用于\1获取它)。
.*\r\n- 后面跟新行的任何内容。
将其包围()存储在第二组中(用于\2获取它)。
(?!\1)- 负前瞻,相同的标签不应该出现在下一行。

于 2013-03-15T10:47:18.433 回答