У меня есть некоторые сложные регулярные выражения, которые мне нужно комментировать для удобочитаемости и обслуживания. Спецификация Java довольно короткая, и я долгое время пытался работать над этим. Я, наконец, поймал свою ошибку и опубликую ее как ответ, но я был бы благодарен за любой другой совет по поддержанию регулярных выражений
В качестве примера я хочу прокомментировать подкомпоненты (patternS) в простейшем парсере имен:
String testTarget = "Waldorf T. Flywheel";
String patternS = "([A-Za-z]+)\\s+([A-Z]\\.)?\\s+([A-Za-z]+)";
Pattern pattern = Pattern.compile(patternS, Pattern.COMMENTS);
Assert.assertTrue(pattern.matcher(testTarget).matches());
EDIT: Я был бы признателен за примеры формата (? x).
EDIT: @geowa4 имеет хорошее предложение, которое позволяет избежать встроенных комментариев. Sinnce java и другие предоставили встроенные комментарии, в каких случаях они полезны? (Я думаю, что у меня есть случай, но мне было бы интересно увидеть других).
EDIT: как указано ниже @mikej, регулярное выражение не поддерживает дополнительную начальную ячейку и будет лучше:
String patternS = "([A-Za-z]+)\\s+([A-Z]\\.\\s+)?([A-Za-z]+)";
но это приведет к извлечению пространства в начальном