0

画像ファイル名に正規表現を使用しています。私が正規表現を使用している主な理由は、まったく同じ目的で複数のファイルを作成しないようにするためです。

ファイル名の構文は次のいずれかです。

1)    img_0F_16_-32_0.png
2)    img_65_32_x.png

お気づきかもしれませんが、「img_」は一般的なプレフィックスです。続くのは 2 桁の 16 進数です。別のアンダースコアの後には、1 から 512 までの 2 の累乗でなければならない整数が続きます。さらに別のアンダースコアが次です。

これまでのところ、私の正規表現は問題なく機能しています。残りは私が問題を抱えているものです: 続くことができるのは、アンダースコアで区切られた整数座標 (0 の場合もある) のペア、または x のいずれかだからです。この後、最後の「.png」が続きます。終わり。

現在、私が抱えている主な問題は、両方のバリアントが可能でなければならないことです。また、重複した座標が存在しないことが非常に重要です。最も重要なことは、正と負の両方の整数が 1 つ以上のゼロで始まることは決してないということです! これにより、次のような重複が生成されます。

401 = 00401
-10 = -0010

これは私の最初の試みです:

img_[0-9a-fA-F]{2}_(1|2|4|8|16|32|64|128|256|512)_([-]?[1-9])?[0-9]*_([-]?[1-9])?[0-9]*[.]png

事前にご協力いただきありがとうございます。

トム S.

4

1 に答える 1

3

正規表現を使用する理由 String のいずれかのバリアントを正規の String に分解するクラスを作成し、クラスにこの正規の String を使用するメソッドを与えてhashCode()からequals()、これらのオブジェクトの HashSet を作成して、これらのタイプのファイルの 1 つだけが存在することを確認してみませんか?

于 2012-05-19T01:36:06.680 に答える