Нахождение аббревиатуры через regexp
Нужно определить, есть ли в тексте определённая аббревиатура. Например, «СВО!». Но не слово «СВОРА». То есть искомое сочетание не должны окружать другие буквы, но могут любые другие символы (знаки препинания и т.д). Python3.9.
Я придумал нечто такое:
[^A-zA-ZА-яА-Я]СВО[^A-zA-ZА-яА-Я]
Но аббревиатуру не находит если это начало / конец или перенос строки. Как это пофиксить?
Ответы (1 шт):
UPD: ёЁ не входят в диапазон А-я, поэтому их следует указывать дополнительно.
Спасибо Wiktor Stribiżew за напоминание об этом, а так же верное уточнение по поводу диапазона А-z и тому что он не равен A-Za-z
Для решения подобной задачи можно попробовать использовать группу с логическим или (...|...)
(^|[^A-Za-zА-яА-ЯёЁ])СВО([^A-Za-zА-яА-ЯёЁ]|$)
Так же можно воспользоваться группами с негативным просмотром назад (?<!...) и негативным просмотром вперед (?!...)
(?<![ёЁА-яA-Za-z])СВО(?![ёЁА-яA-Za-z])
Так же можно использовать границу слова \b, в python она должна работать и с кириллицей на сколько я помню
\bСВО\b