Регулярные выражения во время просмотра позади - PullRequest
0 голосов
/ 13 ноября 2018

Я использую приведенное ниже регулярное выражение для сопоставления строк; Я ожидал следующих результатов

Regex ^.*(?<!abc)(?<!def)(?<!ghi).xyz.co.*

Не соответствует

    ghi.xyz.org
    ghi-hipqr.xyz.org
    abc-hipqr.xyz.org

Match

qrs.xyz.org
qrs-hipqr.xyz.org

Тем не менее, ghi-hipqr.xyz.org соответствует регулярному выражению (этого не должно быть, поскольку в строке присутствует ghi, присутствующий в строке). Как я могу это исправить?

1 Ответ

0 голосов
/ 14 ноября 2018

Сбой, потому что ghi находится не сразу перед .xyz. в вашей строке.Java (как и многие другие движки регулярных выражений) не поддерживает отрицательное утверждение обратной длины переменной длины.

Вместо этого вы можете использовать следующие отрицательные выражения предпросмотра:

^(?!.*\b(?:abc|def|ghi)\b).*\.xyz\.org.*$

RegEx Demo

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