Мне нужно регулярное выражение java, соответствующее слову, с учетом возможности комментария внутри каждых двух последующих букв. Например, "W/*comment1*/OR/*comment2*/D"
. Я пытался использовать именованный захваченную группу и обратной ссылки:Java regex для совпадения слов с необязательными множественными комментариями между каждыми двумя буквами (как обратная ссылка на подвыражение регулярных выражений)
(?<comment>\s*/\*.*\*/\s*)W\k<comment>*O\k<comment>*R\k<comment>*D
Но это не работает, потому что обратная ссылка ссылается на матч с именем группы, а не фактической группы подвыражения. Таким образом, я должен был повторить свой комментарий подвыражению (?<comment>\s*/\*.*\*/\s*)
во всех местах, где ожидаются:
W(\s*/\*.*\*/\s*)*O(\s*/\*.*\*/\s*)*R(\s*/\*.*\*/\s*)*D
Это работает, но есть ли более элегантное решение, без необходимости повторять «комментарий» подшаблоны много раз?
пример входного выхода помог бы – vks
Как насчет того, Я думаю, что это путь. Это делает код более простым и, скорее всего, быстрым, если не быстрее, чтобы запустить два простых регулярных выражения, чем сложный. Плюс легче обслуживать и пробовать ... – Johnride
@vks Это пример: W/* comment1 */OR/* comment2 */D –