Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2011, 13:11   #1
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
Вопрос Проблема с RegExp

Пример текста:
jkfjkfjkfdjkdfjk {text1}fkdkdl {text2}flflc

Код:
Код:
            MatchCollection matches = Regex.Matches(
                rtxtMessage.Text, @"(?<val>{.*})", RegexOptions.Singleline);

            foreach (Match match in matches)
            {
                rtxtMessage.SelectionStart = match.Groups["val"].Index;
                rtxtMessage.SelectionLength = match.Groups["val"].Length;
                rtxtMessage.SelectionColor = Color.Blue;
            }
Нужно выделить отдельно {text1} и {text2}, но у меня выделяется {text1}fkdkdl {text2}. Как сделать, чтобы они выделялись отдельно, а не как одно целое?
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Старый 26.02.2011, 13:28   #2
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

Долго ломал голову, а как создал тему, через некоторое время догадался.

Нужно изменить регулярное выражение на: (?<val>{\w*})

Смысл в том, что при .* искались любые символы, поэтому захватывалась вся строка, а при \w*, захватывается любой алфавитно-цифровой символ и {} не учитываются.
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Старый 26.02.2011, 17:31   #3
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

еще можно было ограничить жадность квантификатора
Код:
(?<val>{.*?})
m0nax вне форума Ответить с цитированием
Старый 26.02.2011, 21:01   #4
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

Цитата:
Сообщение от m0nax Посмотреть сообщение
еще можно было ограничить жадность квантификатора
Код:
(?<val>{.*?})
Хм, это даже лучше. Спасибо.
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
regexp в С++ Пепел Феникса Общие вопросы C/C++ 2 10.11.2010 18:26
Regexp на чистом С++ 1datr Общие вопросы C/C++ 1 05.11.2010 21:44
как исключить слова RegExp kroŧ Общие вопросы Delphi 0 24.10.2010 18:40
C++ Builder RegExp Namolem Помощь студентам 1 19.01.2010 23:13
выделить из строки (regexp) NieL Общие вопросы Delphi 2 23.06.2009 08:21