.NET 正则表达式(类似 perl),用于检测连续粘贴两次的文本



我有大量的json文件,由于制作它们的程序的UI错误,这些文件通常具有连续两次意外粘贴的文本(没有空格分隔它们)。

示例:{FolderLoc = "C:\testC:\test"}

我想知道正则表达式是否可以匹配这一点。它将是每行的。如果我能做到这一点,我可以使用 FNR(一种支持 .NET RegEx 的批处理文本处理工具)来摆脱意外重复。

我很遗憾没有一个我尝试展示的例子,但这是一个非常独特的问题,我无法在搜索引擎上找到任何类似的内容,甚至无法开始基于解决方案。

任何帮助将不胜感激。

可以沿着字符串(.+样式)收集文本,然后预先检查到目前为止捕获的内容,因此重复它的内容是什么,例如

/(.+)(?=1)/;  # but need more restrictions

然而,即使只是在双le TTers 上,这也会被绊倒,所以它至少需要多一点。例如,我们的模式可以要求重复的文本至少有两个单词长。

这是一个基本和原始的示例。另请参阅最后关于正则表达式的说明。

use warnings;
use strict;
use feature 'say';
my @lines = (
q(It just wasn't able just wasn't able no matter how hard it tried.),
q(This has no repetitions.),
q({FolderLoc = "C:testC:test"}),
);
my $re_rep = qr/(w+W+w+.+)(?=1)/;  # at least two words, and then some
for (@lines) { 
if (/$re_rep/) {
# Other conditions/filtering on $1 (the capture) ?
say $1
} 
}

这至少匹配两个单词:单词(w+)+非单词字符+单词+任何内容。这仍然会得到一些合法数据,但这是一个开始,现在可以根据您的数据进行自定义。我们可以调整正则表达式和/或进一步检查该if分支内的捕获。

该模式不允许任何干预文本(重复必须立即跟进),如果需要,可以轻松更改的内容;问题是是否可以标记一些合法的重复。

上面的程序打印

只是无法 C:\test

关于正则表达式 的注释 这个寻找重复文本的任务太通用了 就目前而言,它肯定会挑选某人的好数据。只需注意,我必须至少需要两个单词(一个单词that that被标记),这是任意的,仍然不够。 首先,在数据文件(3,3,3,3,3)中实际找到的重复数字也将匹配。

因此,这需要进一步专业化,因为我们需要了解数据。

最新更新