Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как оптимизировать регулярки 
:(
    Опции темы
ViperYa
  Дата 23.8.2010, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.7.2010

Репутация: нет
Всего: нет



Привет всем. Подскажите, можно ли упростить данное регулярное выражение:
^[^a-zа-яё]+ (Вытаскивает все небуквенные символы в начале предложения)
[^a-zа-яё)]+$ (Вытаскивает все небуквенные символы, кроме закрывающей скобки в конце предложения)

И еще: Есть List<string> Words со словами. Нужно подчеркнуть все все вхождения слов коллекции в тексте. Подскажите, как будет быстрее по скорости так:
Код

foreach (string word in Words)
            {
                MatchCollection matches = Regex.Matches(rtbSource.Text, "\\b" + word + "\\b", RegexOptions.IgnoreCase);
                foreach (Match match in matches)
                {
                    Application.DoEvents();
                    rtbSource.Select(match.Index, word.Length);
                    rtbSource.SelectionColor = col;
                }
            }

или если в регулярку записать все слова через "|" и весь текст прогнать по регулярке..?

PM MAIL   Вверх
ИванМ
Дата 23.8.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 1
Всего: 23



ViperYa, вы ошиблись разделом. Ищите раздел про .NET и c# 
PM MAIL   Вверх
jonie
Дата 23.8.2010, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



ViperYa, для вашей задачи решулярки вообще не нужны.
Например для первой регулярки: Вам надо пробежаться по String-у посимвольно и каждый символ сравнивать на попадание в два диапазона ['a';'Z'] и ['а','Я'] (в кодировке UCS-2 (aka урезанная utf16) указанные символы идут подряд). Вот и всё.

Насчет linq: используйте String.FindFirstOf() в цикле, релугярка тут тоже не нужна.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.