-1

テキスト ファイルの例:

\folder_0
\フォルダ-0
\フォルダ-1
\フォルダ'2
\フォルダ-3
\folder_3
\フォルダ'3
\フォルダ,3
\フォルダ,4

1 文字のバーと同じ行をどのように見つけますか。例えば:

\folder_0
\フォルダ-0
\フォルダ-3
\folder_3
\フォルダ'3
\フォルダ,3
4

2 に答える 2

3

正規表現は使用しないでください。

与えられた 2 つの文字列 (ファイルの行) が true を返す関数を定義することから始めます。それらは 1 文字だけ異なります。

次に、連想配列を使用して、その関数に基づいて 1 文字だけ異なる行のグループを収集します。

ファイルを処理した後、複数の行を含む連想配列内のすべてのエントリが必要な結果になります。

于 2012-10-30T15:52:06.423 に答える
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}};

このコードをここでテストします。

于 2012-10-30T19:04:59.443 に答える