在下一行插入正则表达式匹配项

时间:2018-08-08 02:07:02

标签: regex notepad++

我有一个类似的文件

[A()]
[B(), C()]

我想像这样将C()移动到它下面的行中

[A()]
[B()]
[C()]

现在,我有\,?\s?C\(.*\)C()部分匹配。我不确定如何将匹配项插入下一行。

一旦发生这种情况,在大多数情况下可能看起来像这样:

[A()]
[B()]
, C()

那很好,我将需要做另一遍操作才能在括号中添加/删除逗号。我的问题仅是将匹配的捕获组插入下一行(并将其从当前行删除)。

例如,如果找到某行标记作为匹配行(没有找到匹配项),称为$$,我想将\,?\s?C\(.*\)替换为$$\n$1,假设$1是匹配的文本(由于上述原因,请再进行一次遍历)。

我在记事本++中。

2 个答案:

答案 0 :(得分:1)

要一次性完成所有操作,您可以搜索

NUM_COLS

并替换为

\,?\s?C(\(.*?\))

即-匹配前导逗号和空格(如果存在),捕获参数列表及其周围的括号,然后替换为结束括号,换行符和捕获的组

https://regex101.com/r/tBHaNU/1

答案 1 :(得分:0)

  • Ctrl + H
  • 查找内容:,\h*(C\()
  • 根据需要替换为]\n[$1]\r\n[$1
  • 检查环绕
  • 检查正则表达式
  • 全部替换

说明:

,       : a comma
\h*     : 0 or more horizontal spaces
(       : start group 1
  C\(   : C followed by an open parenthesis
)       : end group

替换:

]       : close bracket
\n      : linefeed
[       : open bracket
$1      : content of group 1, ie. C(

给定示例的结果

[A()]
[B()]
[C()]