Java中的特殊正则表达式语法

时间:2012-05-19 01:32:20

标签: java regex

我正在使用图像文件名的正则表达式。 我使用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

提前感谢您的帮助,

Tom S。

1 个答案:

答案 0 :(得分:3)

为什么要使用正则表达式?为什么不创建一个将String的变体分解为规范String的类,为类提供使用此规范String的hashCode()equals()方法,然后创建这些对象的HashSet以确保仅存在这些类型的文件之一?