Нахождение аббревиатуры через regexp

Нужно определить, есть ли в тексте определённая аббревиатура. Например, «СВО!». Но не слово «СВОРА». То есть искомое сочетание не должны окружать другие буквы, но могут любые другие символы (знаки препинания и т.д). Python3.9.

Я придумал нечто такое: [^A-zA-ZА-яА-Я]СВО[^A-zA-ZА-яА-Я] Но аббревиатуру не находит если это начало / конец или перенос строки. Как это пофиксить?


Ответы (1 шт):

Автор решения: ipatev_nn

UPD: ёЁ не входят в диапазон А-я, поэтому их следует указывать дополнительно.
Спасибо Wiktor Stribiżew за напоминание об этом, а так же верное уточнение по поводу диапазона А-z и тому что он не равен A-Za-z


Для решения подобной задачи можно попробовать использовать группу с логическим или (...|...)

(^|[^A-Za-zА-яА-ЯёЁ])СВО([^A-Za-zА-яА-ЯёЁ]|$)

Так же можно воспользоваться группами с негативным просмотром назад (?<!...) и негативным просмотром вперед (?!...)

(?<![ёЁА-яA-Za-z])СВО(?![ёЁА-яA-Za-z])

Так же можно использовать границу слова \b, в python она должна работать и с кириллицей на сколько я помню

\bСВО\b
→ Ссылка