2012-01-24 4 views
0

В этой программе я разбираю входные данные в целые числа, и я, похоже, не способен принимать отрицательные числа и пробовал кучу регулярных выражений. Я не могу получить целые положительные числа, удалив & &^- это просто отрицательные целые числа, с которыми у меня возникают проблемы.Regex включить отрицательные числа в java

Пример:

input = console.readLine("?> ").split("\\D+&&^-"); 

Любая идея, и что я делаю не так? Спасибо за любую помощь заранее.

Ввод пробы: -7 * 4

Выход: -7 и 4 должны храниться в массиве строк.

+0

Каков ожидаемый вход и выход? –

+0

input - строка, вывод - int. –

+0

можете ли вы показать примеры? –

ответ

3

&& является не оператором "и" внутри регулярного выражения. Я полагаю, вы хотели использовать [^0-9-]+, верно?

Я рекомендую подходящий вместо разделением. Тем не менее, ни один из них не будет тривиально решать угловой случай -12-34 для вас. Разделение даст вам один, не подлежащий анализу номер. Согласование с -?\d+ даст вам два числа, без чего-либо между ними (вы можете рассматривать это как значение по умолчанию +).

+0

Я читал их снова и снова. Похоже, что && является оператором и оператором http://docs.oracle.com/javase/tutorial/essential/regex/char_classes.html –

+0

Что делать, если пользователь вводит '-1-23', тогда ваш вывод будет' -1 '&' -23' как действительное отрицательное целое число. – RanRag

+1

@ LightyearBuzz Боюсь, что вы читаете не одну страницу. Классы символов (обратите внимание на «символ» здесь) не имеют никакого отношения к «и» в regexp * как таковому. * Возможно, вы хотели бы «[+ -]?», Но даже в этом случае понятие «no symbol» не является частью класса символов. – alf

0

-\d* должно получить отрицательное целое число. Если вам нужно что-то более изощренное, например десятичные числа, посмотрите на this link.

+1

он также будет соответствовать '-' в строке типа' hey-ho' – alf

Смежные вопросы