four systems Ответов: 2

Вхождения для целого числа в строке


package RegularEspressions;

import java.util.regex.*; 
 
public class RegFndMultiple { 
  public static void main(String args[]) { 
    Pattern pat = Pattern.compile("^([+-]?[0-9]\\d*|0)$"); 
    Matcher mat = pat.matcher("word 1 2 3 android"); 
 
    while(mat.find()) { 
      System.out.println("numbers found at index " + 
                         mat.start()); 
    } 
  } 
}

должно отображаться положение чисел , код, который печатает положение целых чисел

Что я уже пробовал:

изменен код и добавлены новые шаблоны

Maciej Los

Что касается меня, то ваша модель неверна. Я бы проверил: \d{1,}

Patrice T

В чем же вопрос?

2 Ответов

Рейтинг:
2

Patrice T

Ваш паттерн неверен, он будет соответствовать только строкам, содержащим целое число, и ничего больше из-за ^ и $.
Шаблон был бы лучше, как

"([+-]?[0-9]\\d*|0)"

В любом случае, шаблон слишком сложен, я бы использовал
"([+-]?\\d+)"


Всего лишь несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]

[Обновление]
Попробуйте мой паттерн и ваше решение с помощью "test 1 23 -45 test"
Вы можете удивиться.


four systems

классные ребята большое вам спасибо

Patrice T

Добро пожаловать.
Если решение было полезным и проблема решена, примите решение.
Он закроет вопрос и скажет всем, что на вопрос дан ответ и больше не требуется никакой помощи.

Рейтинг:
10

four systems

package RegularEspressions;

import java.util.regex.*; 
 
public class RegFndMultiple { 
  public static void main(String args[]) { 
    Pattern pat = Pattern.compile("[0-9]"); 
    Matcher mat = pat.matcher("test 1 2 3 test"); 
 
    while(mat.find()) { 
      System.out.println("numbers found at index " + 
                         mat.start()); 
    } 
  } 
}


сделал это и результат есть

чисел в диапазоне от 5
чисел в диапазоне от 7
числа, найденные в индексе 9


Patrice T

Попробовать свои решения с "тест 1 23 -45 "

four systems

в результате получается

чисел в диапазоне от 5
чисел в диапазоне от 7
числа, найденные в индексе 8
чисел в диапазоне от 11
чисел в диапазоне от 12

Patrice T

Это то, что вы ожидаете?
Потому что я вижу 3 целых числа.

four systems

то, что он делает, это проверяет каждое число, но так как это то, что требуется, чтобы проверить любые числа и поставить слово там, Спасибо