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