0

自然数を含む文字列があり、その間に (,-) や (,) などの任意のパターンがあります。while - 条件を使用して、指定された文字列に含まれる数値が、指定されたウィンドウ サイズ (たとえば 5) と同じであることを確認します。

条件は次のようになります。

while(discretizedTs.substring(lagWindowStart).matches("(-?,?\\d+,){5,}")) {
}

ここで、lagWindowStart は次の数字または (-,) パターンのインデックスにジャンプします。小さな文字列の場合、この正規表現は正常に機能します (テストした限り)。私の問題は、大きな文字列の場合 (通常は非常に大きな文字列を処理する必要があります)、この正規表現が SOF を引き起こしたことです。これは、たとえば、文字列に 17,000 文字を超える文字が含まれている場合に発生します。

一致する文字列の長さに制限はありますか? またはマッチングが完了しなければならない時間の制限?正規表現なしで与えられた問題を解決する方法がわかりませんでした。アイデアがあれば幸いです..

よろしくお願いします

4

1 に答える 1

1

デフォルトの JVM スタック サイズはかなり小さいです。-Xss オプション、例えば -Xss1024k でそれを増やすことができます。

于 2012-11-18T19:03:51.747 に答える