Регулярное выражение PCRE в регулярное выражение RE2

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

e.g. :-

BAD:
[email protected]
[email protected]

GOOD:
[email protected]
[email protected]

Вот регулярное выражение из этого ответа:

^(?!test@|tes2@)[A-Za-z0-9._%+-]+@testdomain\.com$

Однако для моего приложения мне особенно нужно регулярное выражение RE2, чтобы иметь возможность использовать это.

Какие шаги я должен предпринять, чтобы преобразовать это выражение PCRE в тип RE2?


person Kavinda Keshan Rasnayake    schedule 17.08.2017    source источник
comment
Проблема в том, что обходные пути не поддерживаются RE2 (см. Таблицу пустых строк здесь). Боюсь, это невозможно сделать в одном регулярном выражении. Разве вы не можете сделать что-то вроде input.endsWith(@testdomain.com) and !input.startsWith(test@) and !input.startsWith(test2@)? См. также: stackoverflow.com/a/30305934/1225328.   -  person sp00m    schedule 17.08.2017
comment
Вы можете преобразовать его в RE2, но это будет выглядеть долго и некрасиво. Я предлагаю двухэтапный подход: 1) если строка соответствует ^[A-Za-z0-9._%+-]+@testdomain\.com$, 2) проверьте, является ли она [email protected] или [email protected]. Если да, то провал, иначе - проход.   -  person Wiktor Stribiżew    schedule 17.08.2017