Как сопоставить шаблоны в Java с утверждением J для строки ниже - PullRequest
0 голосов
/ 29 августа 2018

У меня есть такая строка

String xyz ="JAVAxxxxxxxxxxxxxx   ID: 123678   VERSION: 3"

и я хочу знать, как я могу проверить, что он соответствует определенному шаблону.

Я делаю утверждение, как это

assertThat(xyz).containsPattern("[A-Za-z]* ID: [0-9]* VERSION: [0-9]* ");

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

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

String xyz =" ID: VERSION: "

Вы можете быть более строгими в своем соответствии, если это необходимо. Скажем, если вам нужно обеспечить непустые слова, используйте + вместо * вот так:

assertThat(xyz).matches("[A-Za-z]+ +ID: [0-9]+ +VERSION: [0-9]+");

И если вам нужно ровно три пробела между парами ключ-значение, добавьте {3} к классу символов, включающему только пробел ([ ]), например:

assertThat(xyz).matches("[A-Za-z]*[ ]{3}ID: [0-9]*[ ]{3}VERSION: [0-9]*");

Я нахожу полезными оценщиков в Интернете. Смотрите, например, этот: https://regex101.com/

0 голосов
/ 29 августа 2018

Я думаю, что метод, который вы ищете, это matches(). Кроме того, ваше регулярное выражение не соответствует заданной строке. Строка содержит несколько пробелов между «блоками». Таким образом, вам нужно указать это в регулярном выражении:

assertThat(xyz).matches("[A-Za-z]* +ID: [0-9]* +VERSION: [0-9]*");
...