在Notepad++中使用正则表达式查找和替换文本

3

有人知道如何在Notepad++中实现以下功能吗?

例如,我有以下文本:

 { 1000000003;1;Column; ;
               DataSource=Search Name }

    { 10000004;1;Column; ;
               DataSource=Name 2 }

能否将跟在 DataSource= 后面的值放在上一行中?

该值应在 Column; 之后设置。

结果应该如下所示:

{ 1000000003;1;Column;Search Name ;
               DataSource=Search Name }

    { 10000004;1;Column;Name 2 ;
               DataSource=Name 2 }

我已经创建了以下正则表达式:

(;Column;)|(?<=DataSource=)\w+\s+\w+\.?)

通过这个我找到了我需要的东西,但是没有得到我想要的结果。

使用RegEx是否可能实现这一点,或者有没有插件可以做到这一点?

2个回答

1

您可以使用此正则表达式进行搜索,其中包含3个捕获组:

(Column\s*;)\s*(;\s*DataSource=([^}]+))

替换为:

$1$3$2

正则表达式演示


你能再次帮我吗? Column;Phone (No.) 我现在想删除;Column;之后不符合[A-z0-9]的所有内容。 我尝试了这个正则表达式,但它不起作用。 (;Column;)*([A-z0-9]+) 替换为$1$2 https://regex101.com/r/LxhQ8g/1 我做错了什么? - user3644868
所以你想让 Column;Phone (No.) 变成 Column;Phone No,是吗? - anubhava
没错,只是不带空格,即“列;电话号码”。 - user3644868
请查看此演示:https://regex101.com/r/LxhQ8g/2 - anubhava
如果有输入数据,你能告诉我解决方案是什么吗? - user3644868
显示剩余4条评论

1

是的,您可以使用Notepad++来完成此操作。

使用以下搜索模式进行搜索和替换:

({.*?;)( )?(;.*?DataSource=)(.*?)( })

并用以下内容进行替换:

$1$4$3$4$5

其背后的逻辑是匹配所有带有捕获组的字符串,在您想要替换的部分之前和之后,然后使用相同的捕获组重新构建它 - 仅将第二个组( )?(即替换点的特定捕获组)替换为目标值组,即第四个组(.*?)

这里有一个在regex101中的工作示例

还有一个来自Notepad++的截图:

enter image description here


谢谢你的帮助。这个解决方案和@anubhava的一样好。 - user3644868

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接