axsmak
@axsmak
Создатель

Как написать регулярку, находящую первое вхождение символа 'A', когда символ 'B' встречался до него 0 или чётное количество раз?

Если перефразировать, то надо найти первое вхождение символа 'А', которое не предворялось нечётным вхождением символа 'В'. Символы 'B' не обязательно должны идти подряд.

Строки совпадающие:
Х Х Х Х А В // Символ 'A' найден, вхождение символа 'B' перед ним 0 раз
В Х В Х А Х // Символ 'A' найден, вхождение символа 'B' перед ним 2 раза (чёт)
В В В В А Х // Символ 'A' найден, вхождение символа 'B' перед ним 4 раза (чёт)
В А В Х А Х // Символ 'A' найден, вхождение символа 'B' перед ним 2 раза (чёт). Первое вхождение проигнорировано, так как перед ним только одно вхождение 'B'

Строки не совпадающие:
Х Х Х Х Х Х // Символ 'A' не найден
Х Х В Х А Х // Символ 'A' найден, но вхождение символа 'B' перед ним 1 раз (нечет)
В В Х В А Х // Символ 'A' найден, но вхождение символа 'B' перед ним 3 раза (нечет)
  • Вопрос задан
  • 2326 просмотров
Пригласить эксперта
Ответы на вопрос 2
Aligatro
@Aligatro
Turn food and coffee into software...
Такую сложную маску я вряд ли напишу, но на всякий случай держите очень удобный сервис по проверки регулярок - клац.
Ответ написан
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
Что-то вроде такого: '#^(([^B]*B){2})*[^B]*A#U'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы