Как проверить, всегда ли шаблон регулярного выражения соответствует одному и тому же тексту (Java / Scala) - PullRequest
0 голосов
/ 25 марта 2020

РЕДАКТИРОВАТЬ: я нашел обходной путь к этому, но я все еще хотел бы сохранить этот вопрос из любопытства.

Я использую регулярное выражение в проекте Scala для анализа DSL, и я хотел бы знать, будет ли определенное регулярное выражение продолжать соответствовать тексту или если оно соответствует только ограниченному объему текста, то есть что-то вроде "\\." (допустимая Java строка, не допустимое регулярное выражение), который просто соответствует периоду как в отличие от чего-то вроде "[A-Za-z_$][A-Za-z0-9_$]*", которое (мы надеемся) соответствует действительному идентификатору Java и может соответствовать одному символу, но может также работать, если использовать другой символ alphanumeri c.

Я знаю, что вы можете сделать это ( по крайней мере, с помощью Java API), когда соответствующая строка известна как Matcher#requireEnd(), но есть ли способ сделать это только с Pattern (Java) или Regex (Scala) что вы построили, до вы знаете, что вы соответствуете?

Это так, чтобы я мог иметь это поле в моем классе, представляющее шаблон регулярного выражения: val isFixed: Boolean = ...//does the regex repeat?. Затем при разборе я могу решить, следует ли немедленно вернуть токен или добавить другой символ и попробовать другое совпадение.

Кстати, я в порядке с некрасивыми, частично работающими решениями. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...