Страницы: 1
RSS
VBA. Regex патерн для кириллицы с украинскими символами, Возникла не очевидная проблема с регулярным выражением
 
Всем привет, особенно землякам украинцам.
Столкнулся с мало заметной деталью в регулярных выражениях, мне нужно было, чтобы паттерн захватывал(точнее не трогал) всю кириллицу и еще плюс некоторые символы добавленные вручную, текст большой, смотрю вроде при вставке текста в текстбокс ничего не изменилось, в котором на событие Change, как раз и срабатывает Regex, но результат выдавало кривой, там каждый символ был важен.  Аж после сравнения длины строки выяснилось, что после вставки моего текста в текстбокс пропадает пару символов, штук 5 примерно, потом посимвольно проверил и обнаружил недостачу наших украинских букв, короче намучался чуток.
В итоге паттерн стал выглядеть так: "[^A-Za-zА-Яа-яЁёЄєҐґЇїІі0-9_ ]" & ...

P.S. Про коды символов знаю и что эти самые буквы находятся отдельно, но как-то не сталкивался раньше, знаю стандартный паттерн для кириллицы [А-Яа-яЁё] и мне его хватало, а тут попал на, так сказать, подводный камень... Может кому пригодится когда-нибудь.
 
Приветствую.
Цитата
DANIKOLA написал:
Про коды символов знаю и что эти самые буквы находятся отдельно
Код
Pattern = "[^A-Za-z0-9\u0400-\u052F\u2DE0-\u2DFF\uA640-\uA69F_]"
 
Приветствую и Вас doober. Такого раньше не встречал в vba regex, хотя видел в других языках программирования, но до конца не разобрался.
Судя по ответам(подсказкам) постоянных участников форума, я примерно знаю уровень каждого, кто насколько продвинут в программировании, то до Вас doober мне далековато...
Вот, кому интересно, пошарил в сети, нашел этот же паттерн здесь в этой теме, там же нашел ссылку на Кириллица в Юникоде.
Смотрел вебинар по Regex, то там таких приемов не показывали, возможно об этом и сам преподаватель не знал или не было такой задачи. Ну, а я, и все кто просмотрит эту тему, теперь будем знать, что есть решения более изощренные, чем простые [А-Яа-я]...
Спасибо.
 
DANIKOLA, здравствуйте.
    Ну, как раз, чтобы вводить символы (а также для кроссплатформенности), которые нельзя ввести с клавиатуры (конкретной или вообще) и придумали метод указания символа по его коду (тут - шестнадцатеричному). Юникод даёт ещё больше универсальности, но в RegExp можно ещё и ASCII-коды указывать — \xn
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх