查找匹配的文本并替换下一行Windows 10

时间:2018-12-30 00:46:11

标签: json windows text replace editor

我知道已经问过这个问题,但是答案是针对Linux的。我需要在Windows中使用R或Notepad ++或UltraEdit或类似工具来执行此操作。我需要在格式不正确的json代码的每个“ see_more”实例之后替换该行。

这是一个例子:

"see_more": "/discover/categories/food?page=75&ref=category&seed=2390176"
}
{

我需要在}后的中间添加一个逗号,使其看起来像这样:

"see_more": "/discover/categories/food?page=75&ref=category&seed=2390176"
},
{

这些文件中有成千上万个此类实例,因此手动进行将花费很长时间。请注意,“查看更多”行中的网址会更改。

如果您需要更多信息,请告诉我。谢谢。

编辑:

我知道了,有点。我在TextPad中记录了一个宏(搜索“ see_more”,移至下一行,添加逗号),并将其运行到文件末尾。非常简单和快速,但是我怀疑这在更复杂的情况下是否可行。

1 个答案:

答案 0 :(得分:0)

在UltraEdit中,将 Perl 正则表达式替换为全部即可。

搜索字符串:(?s)see_more.+?\}\K(\s*)(?=\{)
替换字符串:,\1

搜索表达式的说明:

(?s) ...标志以匹配带点的换行符。

see_more ...必须找到此字符串。

.+? ...任何一个或多个非贪婪字符(包括换行符)。

\} ...上一个表达式在找到字符}并用反斜杠转义以解释为原义字符时停止匹配字符。当然,{不应存在于字符串值中,否则此搜索表达式将无法正常工作。但是看起来这个限制对这个任务来说不是问题。

\K ...将$0的开始位置重置为当前文本位置:换句话说,\K左侧的所有内容都“保留”,不构成一部分正则表达式匹配项。

(\s*) ...找到0次或多次任何空格字符,并将找到的空格标记为反向引用。

(?=\{) ...正向查找,以检查下一个字符是否为左括号,并以反斜杠转义为原义字符。

替换字符串由要插入的逗号组成,并反向引用}{之间的空格以使其保持不变。

另一种解决方案最可能在具有Perl兼容正则表达式支持(包括UltraEdit)的所有文本编辑器中工作:

搜索字符串:(see_more[\s\S]+?\})(\s*)(?=\{)
替换字符串:$1,$2

[\s\S]代替点,以匹配任何空白或任何非空白字符,这也意味着包括换行符在内的任何字符。

标记从see_more到最先找到的}的字符串,并在用$1的替换字符串中向后引用,以使找到的字符串的这一部分保持不变。在}{定义的第二个标记组中,\s*(之间由)匹配的空白由$2引用,以保持它们之间也要插入逗号。

相关问题