我知道已经问过这个问题,但是答案是针对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”,移至下一行,添加逗号),并将其运行到文件末尾。非常简单和快速,但是我怀疑这在更复杂的情况下是否可行。
答案 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
引用,以保持它们之间也要插入逗号。