告白しなければなりません。正規表現を書くことに関してはかなり役に立たないのですが、現在、私を本当に混乱させる問題があります。
文字列(サイズ22K)を入力として受け取り、その上で単一の正規表現を実行してLong値を探す関数を作成しました。長い値が見つかった場合は、ハッシュマップの文字列値に置き換えられます。
ただし、文字列内で値が欠落し続けます。私が書いた正規表現は次のとおりです。
Pattern.compile("[*]{3}[0-9]{1,}[*]{3}");
ファイルで検索しているlong値は、次のようにフォーマットされています。
***nnnnnnnnnnnnnnnn***
これで正規表現は機能しているように見えますが、私が言ったように、たとえば次のようないくつかの値が欠落しています。
***1407374883553285*** - FOUND
***281474976720057*** - NOT FOUND
値が欠落している理由については非常に混乱しています。単純なwhileループを使用して検索を実行し、matcher.find()
いつ一致するかを調べています。
正規表現が十分に厳密でないか、入力文字列でのデータの構造が原因で値が欠落していると想定しています。
誰かアドバイスをいただければ幸いです。
ありがとう