0

私は非常に大きな文字列を持っています。ここで見ることができます: http://pastebin.com/vqXJ3WV6

正規表現 3.8 を使用してこの文字列を分割したい メモ帳を使用してこの文字列を検索すると、3.8 のインスタンスが 2 つ見つかります。したがって、返される配列の長さは 3 であると予想されます。

System.err.println(convertPdfToText(save).split("3.8").length);

しかし、これをconvertPdfToTextで呼び出してこの文字列をフェッチすると、長さが4になりますか?

ここに画像の説明を入力

これは少しも理解できません。これは私のプログラムの動作を大幅に変更しているため、何が起こっているのか誰か教えてもらえますか?

前もって感謝します

4

1 に答える 1

3

.文字は、文字通り「任意の文字」を意味する正規表現の特殊文字です。したがって、基本的に探しているのは3[anything]8であり、簡単な正規表現検索では、実際に 3 つの一致があることが示されます。2 つは、実際に探していた有効な "3.8" 文字列です。意図しない一致は、この文字列の末尾にあります:

3.4 ユニット 3: スペイン語を話す 46953 8

.解決策は、文字をバックスラッシュでエスケープして、代わりにリテラルを使用することです。

System.err.println(convertPdfToText(save).split("3\\.8").length);
于 2012-11-25T00:55:59.407 に答える