Я хочу, чтобы регулярное выражение проверяло, есть ли «слово» ([a-zA-Z0-9]), и если есть скобка, должно быть что-то вроде (id = [0- 9] +), после чего одно из этих шести «отношений» следует за другим словом. Должно быть по крайней мере одно пробел между словами и отношением. Между словами и отношением и между (,), id, = и числом может быть больше пробелов. Три строки находятся там, чтобы сократить линии.Строка не соответствует регулярному выражению
Этот код всегда печатает ложь независимо от того, что я пытаюсь:
String first = "\\s[a-zA-Z0-9]+(\\s\\(\\sid\\s=\\s[0-9]+\\s\\))?\\s+";
String second = "(contains|contained-in|part-of|has-part|successor-of|predecessor-of)\\s+";
String third = "[a-zA-Z0-9]+(\\s\\(\\sid\\s=\\s[0-9]+\\s\\))?\\s";
Pattern linePattern = Pattern.compile(first + second + third);
public static void main(String[] args) {
String a = "apple(id=107) contained-in tree";
Matcher matcher = linePattern.matcher(a);
boolean matches = matcher.matches();
System.out.println(matches);
}
ах и я знаю, что я должен объявить их статическими. Я сделал это в своем фактическом коде, но это просто, чтобы было легче читать. :) – AoEAfro
Ваш шаблон начинается с '\\ s', пока ваш пример не начинается с пробела. –
и как я могу написать его так, чтобы он принимал, если есть пустое пространство до бесконечности? – AoEAfro