Я знаю, что отрицательный просмотр назад должен иметь нулевую ширину, но я заметил проблему, из-за которой они не работают, если предыдущий токен является необязательным. Почему это происходит?
(?<!test):?(\\d{3})
Сбой на test123
. Но проходит test:123
Есть ли решение этой проблемы, кроме (?<!test|test:)
? Я бы предпочел избежать приведенного выше решения, поскольку регулярное выражение, к которому я хотел бы применить это, уже имеет много негативных фраз просмотра, которые я бы удвоил.
Редактировать: изначально я разместил это с помощью редактора PCRE, но я кодирую с помощью ICU
(?<!test:{0,1})\d{3}
. - person Wiktor Stribiżew   schedule 21.03.2016