我输入的十六进制四个字节值由以下分隔:(类似于aabbccdd:ffffffff:aaccbbff)。 如何在Java中构造正则表达式,如果输入格式正确,它将给出答案吗?
答案 0 :(得分:6)
这个怎么样?
String value = "aabbccdd:ffffffff:aaccbbff";
boolean match = value.matches("\\p{XDigit}{8}(:\\p{XDigit}{8})*");
// ...
顺便说一句\p{XDigit}
等于[0-9a-fA-F]
。另请参阅java.util.regex.Pattern
javadoc。
答案 1 :(得分:1)
您正在寻找:^([0-9a-fA-F]{8}:)*([0-9a-fA-F]{8})$
可选8个十六进制数字后跟一个冒号(:
)。与没有结肠的组结束。可能是一种减少RegEx的方法。
答案 2 :(得分:1)
您可以尝试使用4个字节的任意序列:[0-9a-fA-F]{8}(:[0-9a-fA-F]{8})*