У меня на входе hex четыре байтовых значения, разделенных: (что-то вроде aabbccdd: ffffffff: aaccbbff). Как построить регулярное выражение в Java, которое даст ответ, если ввод в правильном формате или нет?
Как насчет этого?
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 .
\p{XDigit}
[0-9a-fA-F]
java.util.regex.Pattern
Вы можете попробовать это для произвольных последовательностей по 4 байта: [0-9a-fA-F]{8}(:[0-9a-fA-F]{8})*
[0-9a-fA-F]{8}(:[0-9a-fA-F]{8})*
Вы ищете это: ^([0-9a-fA-F]{8}:)*([0-9a-fA-F]{8})$
^([0-9a-fA-F]{8}:)*([0-9a-fA-F]{8})$
Необязательно 8 шестнадцатеричных цифр, за которыми следует двоеточие (:). Окончание с группой без двоеточия. Вероятно, способ уменьшить RegEx.
: