Помогите написать ругулярку "все буквы русского алфавита, за исключением группы букв "от"

Рейтинг: 0Ответов: 1Опубликовано: 06.06.2023

Скажем, есть строка абвгдеотто. Должно быть 2 совпадения: абвгде и то, от сматчиться не должен. Я думал, что должен сработать [А-Яа-я[^(от)]]=, но почему-то нет. Я проверяю на regex101, синтаксис JS.

Ответы

▲ 0

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

const results = 'абвгдеотто'.matchAll(/от|((?:(?!от)[А-ЯЁа-яё])+)/g)
console.log( Array.from(results, x => x[1]).filter(y => y !== undefined) )

Здесь от|((?:(?!от)[А-ЯЁа-яё])+) находит от или одну и более букв, которая не является начальной буквой подстроки от (захватывая данную последовательность в подмаску №1).

Array.from(results, x => x[1]).filter(y => y !== undefined) оставляет только те значения, которые были захвачены.