2011-05-04 67 views
1

我有輸入十六進制的四個字節值由:(如aabbccdd:ffffffff:aaccbbff)分隔。 如何在Java中構造正則表達式,如果輸入的格式是否正確,將給出答案?正則表達式由字節分隔:問題

回答

1

您正在尋找這樣的:^([0-9a-fA-F]{8}:)*([0-9a-fA-F]{8})$

可選8個十六進制數字後跟一個冒號(:)。與一個沒有冒號的小組結尾。可能是減少RegEx的一種方法。

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

+0

「\\ p {} XDigit {8}(?:: \\ p {} XDigit {8})*」 會更好 - 無不必要的組捕獲 – dhblah 2011-05-04 20:54:17

1

你可以嘗試一下本作的4個字節的任意序列:[0-9a-fA-F]{8}(:[0-9a-fA-F]{8})*