Как проверить конкретные пары ключевое слово / значение в любом порядке - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу проверить, содержит ли строка: String s = "a=182 b=41 c=72", только: abc, с соответствующими значениями, но они могут появляться в случайном порядке.Как мне это сделать?

Я попытался сделать следующее: (?=a\\=(\\d+))\\s+(?=b\\=(\\d+))\\s+(?=c\\=(\\d+))

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

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

^(?:(\\s*[abc]=)(?!.*\\1)\\d+){3}$

Нажмите для демонстрации

Код JAVA

Объяснение:

  • ^ - подтверждает начало строки
  • (?:(\\s*[abc]=)(?!.*\\1)\\d+){3}
    • (\\s*[abc]=) - соответствует 0+ появлений пробела, за которыми следуют либо a или b, либо c, за которыми следует =.Весь этот несовпадение фиксируется в группе 1.
    • (?!.*\\1) - отрицательный прогноз, чтобы убедиться, что за текущим соответствием не следует содержимое группы 1 где-либо позже в строке
    • \\d+ - соответствует 1+ цифрам
    • {3} - повторяет подшаблон 3 раза по одному для a, b, c
  • $- утверждает конец строки
0 голосов
/ 11 февраля 2019

Если ваша строка всегда содержит пробел, вы можете разделить их на массив, например,

String[] words = s.split(" ");

, а затем проверить первый символ каждого элемента массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...