Я пытаюсь создать шестнадцатеричный калькулятор, но у меня есть проблема с regex
.Regex базовых классов
В принципе, я хочу, чтобы строка принимать только 0-9
, A-E
и специальные символы +-*_
Мой код не продолжает возвращаться ложным независимо от того, как изменить регулярное выражение, и добавление звездочка дает мне ошибку PatternSyntaxException
.
public static void main(String[] args) {
String input = "1A_16+2B_16-3C_16*4D_16";
String regex = "[0-9A-E+-_]";
System.out.println(input.matches(regex));
}
Кроме того, когда я добавить *
как часть регулярного выражения дает мне эту ошибку:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal character range near index 9
[0-9A-E+-*_]+
^
Вы уверены, что у вашего фактического кода нет 'regex.matches (input)'? http://ideone.com/YtmyTY –
'F' также является шестнадцатеричным символом. Тем не менее, вам действительно нужно использовать лексер и парсер. См. 'Lex' и' yacc' в традиционной UNIX или GNU 'flex' и' bison' в Linux и портах. Вы не хотите '/' вместо '_'? –