1

Ubuntu と Windows でまったく同じ eclipse プロジェクトを実行していますが、出力が異なります。

不均一な動作は、次のコードで発生します。

String regex = "<token id=\"(.*)\">.*\n.*<word>(.*)</word>.*\n.*<lemma>(.*)</lemma>.*\n.*\n.*\n.*<POS>(.*)</POS>";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(fileAsString);
while (matcher.find()) {
    ...
}

(matcher.find()) チェックは、Windows では false を返しますが、Ubuntu では true を返します (これは予期される動作です)。

両方のEclipse Junoとjdk7。

オペレーティングシステムとは関係ないかもしれませんが、並行してデバッグし、2 つの環境でプロジェクトのプロパティを確認した後に見つかった唯一の違いです。

違いについて何か考えはありますか???

4

3 に答える 3

4

\nこれは Linux の行末ですが、Windows ではありません (Windows の場合は必要です\r\n)。\r?\nあなたの特定の問題を解決するようなものです。

つまり、HTML のようなもの (XML を含む) を正規表現で解析するべきではありません。XML に関するすべてのものを見逃しています。特に、タグやスペースなどの順序の違いなど、手書きの「間違い」に対する柔軟性が欠けています。

于 2013-01-10T20:51:41.867 に答える
1

行末文字の違いかもしれません。オプションの \r を正規表現に追加してみてください。

于 2013-01-10T20:50:53.850 に答える
1

おそらく行末のせいです。ドットはデフォルトでは行末と一致しないため\n、正規表現で明示的に探します。

でパターンをコンパイルしてみるか、正規表現のどこにでもPattern.DOTALL置いてください。\r?\n\n

于 2013-01-10T20:51:12.803 に答える