Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Power Basic

Страница: 1 |

 

  Вопрос: Проблема с русскими выражениями в REGEXPR Добавлено: 14.03.09 13:30  

Автор вопроса:  Lapex
В справке по REGEXPR указано, что по умолчанию поиск регулярных выражений не чувствителен к регистру, но с русскими выражениями это не работает :(
REGEXPR "^п" IN "Пример" TO nPos&, nLen

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).
  1. REGEXPR "a((bc)|(b)|(x))cc" IN "abccaxcc" TO nPos&, nLen&

Почему возвращается nPos&=5 и nLen&=4, что соответствует "axcc"?

В справке указано, что приоритет будет слева-направо, значит по идее должно было вернуть nPos&=1 и nLen&=4, что соответствует "abcc".

Прошу разъяснить почему так получается.

Заранее благодарен.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам