Regex: использование выражения lookahead для проверки того, существует ли символ не более определенного количества раз

Как использовать выражение lookahead, чтобы определить, существует ли какой-либо символ не более определенного количества строк в строке.

Например, скажем, я хочу проверить строку с хотя бы одним символом, чтобы убедиться, что она содержит "@" не более 2 раз. Заранее спасибо. Использование python, если это имеет значение.

Ответ 1

Существует много способов сделать это, например:

/^(?=([^@]*@){,2}[^@]*$)./

Ответ 2

Используя отрицательное утверждение, вы можете убедиться, что @не появляется три раза:

(?!.*@.*@.*@.*).*

Ответ 3

Я считаю, что ответ Mark не работает, так как вам нужно исключить @из соответствия в другое время. Попробуйте следующее:

^(?=(([^@]*@){0,2}[^@]*$))

Изменить: Марк исправил свой ответ, наш должен быть таким же, как сейчас. Кроме того, исправлено.