Строка данных, не соответствующая шаблону регуляции,JAVA

Программисты JAVA общаются здесь
Anonymous
Строка данных, не соответствующая шаблону регуляции,

Сообщение Anonymous »

Я пытаюсь проанализировать строки данных, используя следующий шаблон: < /p>


1337; группа; переменная; 13.37; key = value; key = value; key = value ... (и т. Д. Номер?; Name ?; name?; Value; (key = value)*.

the; Разделитель может быть установлен на любую строку. Например, если он установлен на foo < /code>, эта строка данных будет считаться действительной: < /p>


1337foogroupfoovariablefoo13.37fookey = value < /p>
< /blockquote>

, только что будет продуманно, это также будет значит, что это будет также значение < /b -код. Действительно: < /p>


foofoofoo13.37 < /p>
< /blockquote>

Я попробовал следующий тестовый код: < /p>

private static final String BASE_PAYLOAD_DATA = "\\s*(\\d*SEPNOTSEP*SEPNOTSEP*SEPNOTSEP+(?:SEPNOTSEP*=NOTSEP*)*)\\s*$";

public static void main(String[] args) {
String line = "1337;GROUP;VARIABLE;13.37;key=value";
String separator = ";";

String processed = StringUtils.replace(BASE_PAYLOAD_DATA, "NOTSEP", "(?!" + separator + ")");
processed = StringUtils.replace(processed, "SEP", "(?:" + separator + ")");
System.out.println(processed);

Pattern payloadData = Pattern.compile(processed);
System.out.println(payloadData.matcher(line).matches());
}
< /code>

Но проверенная строка не совпадает. Строки SEP < /code> и notsep < /code> используются для моделирования того факта, что сепаратор может быть настроен.\s*(\d*(?:;)(?!;)*(?:;)(?!;)*(?:;)(?!;)+(?:(?:;)(?!;)*=(?!;)*)*)\s*$
false
< /code>

Я двойной и тройной проверял шаблон, но я не могу указать на неисправный элемент, и я боюсь, что я мог бы упустить что-то слишком очевидное. шаблон режима Regex? Это не включено в подсчет для нумерации обратных ссылок. Если вы хотите сохранить матч режима в виде Lookahead, вы должны положить схватки скобки вокруг резервуара в Lookahead, например,: (?>

Подробнее здесь: https://stackoverflow.com/questions/256 ... ex-pattern

Вернуться в «JAVA»