//Всем привет, вопрос про
RegExp = Новый ComObject("VBScript.RegExp");
//есть текст:
Стр = "всем привет , приветик большой";
//делаю:
RegExp.Pattern = "\bпривет\b";
Результат = RegExp.Replace(Стр, "hello");
Сообщить(Результат);
если исходный текст не содержал бы русских символов, то все прекрасно работает.
У меня вопрос - это косяк и забить на эти регулярные выражения или есть решение?
(1) Если честно не очень понятно что ты вообще хочешь сделать, как сказали выше напиши первоначальную постановку задачи.
Можно например вот так попробовать.
//Всем привет, вопрос про
RegExp = Новый ComObject("VBScript.RegExp");
RegExp.Global = Истина;
//есть текст:
Стр = "всем привет , приветики всем";
Стр = СтрЗаменить(Стр,"привет","change");
//делаю:
RegExp.Pattern = "\bchange ";
Результат = RegExp.Replace(Стр, "hello");
Результат = СтрЗаменить(Результат,"change","привет");
Сообщить(Результат);
(12) (13) Так в том то и дело, что изначально не понятно что автор темы хотел сделать, по его коду я понял только то что он хотел поменять "привет" на "hello" но не менять "приветики", об этом говорит отсутствие RegExp.Global = Истина, и мета символы /b в начале и в конце и это и в правду можно сделать без RegExp, но так как вопрос был про него то вот и ответ)
(6) Или так, причем не важен язык искомого слова для кирилицы и латиныц одинаково отработает один шаблон
RegExp = Новый ComObject("VBScript.RegExp");
//есть текст:
Стр = "всем привет , приветик большой";
//делаю:
Слово = "привет"; //Патерн = "\u043F\u0440\u0438\u0432\u0435\u0442";
Патерн = "";
Для ш=0 По СтрДлина(Слово)-1 Цикл
Патерн = ""+Патерн + "\u"+ to16(КодСимвола(Слово,ш+1));
КонецЦикла;
RegExp.Pattern = "\s"+Патерн+"\s";
Результат = RegExp.Replace(Стр, " hello ");
Сообщить(Результат);
Показать
Функция to16(чсл)
Если 0 = чсл Тогда
Возврат "0000";
КонецЕсли;
результат = "";
Пока 0 < чсл Цикл
остаток = чсл % 16;
Если 10 <= остаток Тогда
результат = Символ(КодСимвола("A") + остаток - 10) + результат;
Иначе
результат = строка(остаток) + результат;
КонецЕсли;
чсл = цел(чсл / 16);
КонецЦикла;
Пока СтрДлина(результат) < 4 Цикл
Результат = "0"+Результат;
КонецЦикла;
Возврат результат;
КонецФункции
Вероятнее всего косяк Рег Эксп. Забивать на регулярку не стоит. Иногда без нее почти ни как. А если и можно и выкрутиться то крайне гем....но. Так что лучше по не много осваивать. Лучше кидай первоначальную постановку задачи: что из строки нужно вытащить по каким критериям, я к тому что можно обойтись и без "\b".