0

我正在为图像文件名使用正则表达式。我使用 RegEx 的主要原因是为了防止多个文件用于完全相同的目的。

文件名的语法可以是:

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

您可能已经注意到,“img_”是通用前缀。接下来是一个两位数的十六进制数。在另一个下划线之后是一个整数,它必须是 2 的幂,介于 1 到 512 之间。接下来是另一个下划线。

好的,到目前为止,我的正则表达式工作完美。剩下的就是我遇到的问题:因为后面可以是一对整数坐标(可以是 0),用下划线或 x 分隔。之后是最终的“.png”。完毕。

现在我遇到的主要问题是这两种变体都必须是可能的,而且非常重要的是不能有任何重复的坐标。最重要的是,整数,无论​​是正数还是负数,都不能以一个或多个零开头!这会产生重复,如:

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 的类,给类 ahashCode()equals()使用此规范 String 的方法,然后创建这些对象的 HashSet 以确保仅存在这些类型的文件中的一种?

于 2012-05-19T01:36:06.680 回答