Какое регулярное выражение использовать? - PullRequest
1 голос
/ 01 августа 2010

У меня есть такие выражения, как:

-3-5
or -3--5
or 3-5
 or  3-+5
or -3-+5

Мне нужно указать числа, разделив их знаком «-», то есть в вышеуказанных случаях мне понадобятся -3 и 5, -3-5, 3 и 5, 3 и +5, -3 и +5.Я пытался использовать это:

String s[] = str.split("[+-]?\\d+\\-[+-]?\\d+");
    int len = s.length;
       for(int i=0;i<len;i++)System.out.println(s[i]);

, но он не работает

Ответы [ 3 ]

8 голосов
/ 01 августа 2010

Попробуйте разделить это регулярное выражение:

str.split("\\b-")

Граница слова \b должна совпадать только до или после цифры, чтобы в сочетании с - только следующие - в качествеИндикатор диапазона соответствует:

-3-5, -3--5 , 3-5,3-+5,-3-+5
  ^     ^      ^   ^     ^
1 голос
/ 01 августа 2010

Перекрещено на forums.sun.com.

Это не работа для РЭ самих по себе.Вам нужен сканер для возврата операторов и чисел, а также анализатор выражений.Рассмотрим -3 ------- 5.

0 голосов
/ 03 августа 2010

С твоим выражением все в порядке.Разделение не является выбором, поскольку вы пытаетесь сопоставить выражение с вашей строкой - не разбивайте строку, используя ее:

Вот код, который может использовать ваше выражение для получения того, что вы хотите:*

String a = "-90--80";
Pattern x = Pattern.compile("([+-]?\\d+)\\-([+-]?\\d+)");
Matcher m = x.matcher(a);
if(m.find()){
 System.out.println(m.group(1));
 System.out.println(m.group(2));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...