Страница: 1 |
Вопрос: Проблема с русскими выражениями в REGEXPR | Добавлено: 14.03.09 13:30 |
Автор вопроса: ![]() |
В справке по REGEXPR указано, что по умолчанию поиск регулярных выражений не чувствителен к регистру, но с русскими выражениями это не работает :(
REGEXPR "^п" IN "Пример" TO nPos&, nLen
nPos и nLen возвращают: 0. Возможно ли это побороть? |
Ответы | Всего ответов: 6 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 84 Ответов: 453 |
Профиль | Цитата | #1 | Добавлено: 14.03.09 23:18 |
можно перекодировать кирилицу - латиницей, и работать с ней |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 56 |
Профиль | Цитата | #2 | Добавлено: 15.03.09 11:49 |
Я уже рассматривал этот вариант и думаю, что он не будет корректно работать.
Для перекодировки русских символов в латиницу необходимо иметь такое же количество латинских регистро-зависимых символов. Т.к. русских символов больше, чем латинских регистро-зависимых, значит придется использовать комбинации из латинских символов, что может привести к неправильному результату REGEXPR. Например, если перед искомым выражением встретится такая комбинация символов, то будет возвращена неправильная позиция найденного выражения. Также, существует вероятность, что в русской строке может встретиться английское слово и тогда после перекодировки существует вероятность, что в этом слове будет найдено русское выражение. Честно говоря, я рассчитывал на "чудо", типа какой-то установки связанной с кодовой страницей, но понял, что без извращений здесь не обойтись. Пока у меня возникла идея делать проверку шаблона на наличие русских символов и Escape-символа "\c". Если есть русские символы, и нет символа "\c", то переводить строку и шаблон в нижний регистр, а затем производить поиск. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 13 Ответов: 348 |
Профиль | Цитата | #3 | Добавлено: 16.03.09 14:05 |
Можно использовать библиотеку от MS. Там вроде работает. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 56 |
Профиль | Цитата | #4 | Добавлено: 16.03.09 18:40 |
Я понял, что эта библиотека поставляется с IE - как ее подключить? |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 56 |
Профиль | Цитата | #5 | Добавлено: 17.03.09 13:00 |
В общем я нашел примеры от Dave Navarro и Josй Roca - буду разбираться. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 56 |
Профиль | Цитата | #6 | Добавлено: 19.03.09 14:37 |
Решил все таки остановиться на регулярных выражениях PB.
У меня возник вопрос по поводу использования оператора "|" (OR).
Почему возвращается nPos&=5 и nLen&=4, что соответствует "axcc"? В справке указано, что приоритет будет слева-направо, значит по идее должно было вернуть nPos&=1 и nLen&=4, что соответствует "abcc". Прошу разъяснить почему так получается. Заранее благодарен. |
Страница: 1 |
|