如何查找单个字符不同的行

时间:2012-10-30 15:33:47

标签: regex

示例文本文件:

\folder_0
\folder-0
\folder-1
\folder'2
\folder-3
\folder_3
\folder'3
\folder,3
\folder,4

如何找到同一个条形的一行字符。例如:

\folder_0
\folder-0
\folder-3
\folder_3
\folder'3
\folder,3

2 个答案:

答案 0 :(得分:3)

不要使用正则表达式。

首先定义一个给定两个字符串(文件中的行)返回true的函数,它们只有一个字符不同。

然后使用关联数组来收集仅基于该函数的单个字符不同的行组。

处理完文件后,关联数组中包含多行的任何条目都是您想要的结果。

答案 1 :(得分:1)

一种可能的方式......(在Perl中)......

@m = (m/[\s\S]*?(?:^|\n)(?=(.*?)(.)(.*?)(?:\n|$)(?:[\s\S]*?\n|)(\1.\3)(?:\n|$))/g);
@p = ();
while ($#m > 0) {
  ($a, $b, $c, $d) = (shift(@m), shift(@m), shift(@m), shift(@m));
  push(@p, ("$a$b$c", $d));
}
@p = keys %{{map{$_ => 1} @p}};

测试此代码 here