Нужна помощь с регулярным выражением, когда в строке изменяется только одно число - PullRequest
2 голосов
/ 21 июля 2011

Как проверить в Java с помощью регулярного выражения, совпадает ли какая-либо строка с

Monday ptnumber Operating Mode

, где число (после pt) имеет конкретное значение, например 0,1, ... 99, .. - любое целое число?Mondaypt и режим работы жестко запрограммированы, просто число может измениться в строке.

Ответы [ 6 ]

1 голос
/ 21 июля 2011

@ Марк Питерс и @ Йоахим Зауэр дали хороший ответ.Но я хотел бы добавить короткий комментарий.

используйте \ d вместо [0-9] и \ s + вместо пробела, то есть "Monday\\s+\\d+\\s+Operating Mode".Теперь регулярное выражение менее строгое: оно допускает количество пробелов.Для меня \ d более читабельно, чем [0-9]

  1. метод matches автоматически добавляет ^ в начале и $ в конце регулярного выражения.Вместо этого используйте Matchermfind().

  2. Компиляция шаблона - это процесс, который сильно загружает процессор.Во время инициализации приложения рекомендуется использовать Pattern.compile () для всех статических шаблонов, а затем использовать готовый шаблон.String.mantches () фактически создает шаблон, а затем запускает его.

private static Pattern p = Pattern.compile("Monday\\s+\\d+\\s+Operating Mode");

// now use it:

p.matcher(str).find();

1 голос
/ 21 июля 2011
boolean matches = input.matches("Monday pt[0-9]+ Operating Mode");
0 голосов
/ 21 июля 2011
input.matches("Monday pt(\\d+) Operating Mode");
0 голосов
/ 21 июля 2011

Это также извлечет число.

String input ="Monday pt23 Operating Mode";
Pattern p = Pattern.compile("Monday pt([0-9]+) Operating Mode");
Matcher m = p.matcher(input);
boolean found = m.find();
if (found) {
    String number = m.group(1);
    System.out.println(number);
}
0 голосов
/ 21 июля 2011

Как насчет input.matches("Monday \\d{0,2} Operating Mode");

0 голосов
/ 21 июля 2011
String input = "Monday 24 Operating Mode";
if ( input.matches ( "Monday [0-9]+ Operating Mode" ) ) {
    //...it matches...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...