Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Выделение строки с помощью регулярного выражения


Автор: Алексеу 2.2.2010, 11:49
Здравствуйте!

Недавно начал использовать регулярные выражения, столкнулся с проблемой выделения строки в подстроке.

К примеру, с прока:
"У Васи были "хорошая" панама". 
В этой строке с помощью регулярного выражения нужно выделить подстроку "хорошая", чтобы затем ее подсветить (ASP.NET).

Не подскажите, как можно подсветить данную подстроку? 
Использовал что-то вроде:

Код

r = new Regex("\"*\"");
                       Match match = r.Match(tmp_return);
                       if (match.Success)
                       {
                           tmp = match.Value;
                       }


Без результата.

Буду очень признателен за подсказки.

Автор: Ceiceron 2.2.2010, 12:37
В самом простом варианте регулярное выражение может выглядеть так:
Код

\"хорошая\"

собственно всегда можно подставить непосредственно нужное слово как шаблон поиска.
в более универсальном (для кирилицы):
Код

\"[0-9а-яА-Я]+\"

а вообще есть хороший http://myregexp.com/

Автор: Алексеу 2.2.2010, 12:44
На [0-9а-яА-Я] оно отрабатывает, однако, нужно чтобы внутри строки могли быть любые символы, скажем < или & и т.д. Задача просто выделить все подстроки "..." из общей строки. Как можно поступить в этом случае?

Автор: Ceiceron 2.2.2010, 12:48
Усложнить регулярное выражение  smile 
Почитайте о них в http://ru.wikipedia.org/wiki/Регулярные_выражения например или если английский в норме, http://www.regular-expressions.info/. 

з.Ы. воспользуйтесь поиском по форуму, тут уже было много вопросов о написании регулярных выражений.

Автор: Алексеу 2.2.2010, 13:00
К примеру, получается:

("^\"\"$");

Т.е. ^\" - Строка начинается на "
и тут же пишу
\"$ - строка заканчивается на "

Вроде бы по логике все корректно, но не отрабатывает.

Автор: Ceiceron 2.2.2010, 13:13
Возьмите сайт для отладки регулярок, что я посоветовал (работает в IE, нужно Java поставить на машину, если попросит).
и попробуйте разобрать свое выражение.
Код

("^\"\"$");

так работать не будет  smile  у вас же строка не начинается с кавычек, вообще ваше слово в середине текста.

з.ы. прочтите все-таки статью в википедии.

Автор: Heinzz 2.2.2010, 13:47
Цитата(Алексеу @  2.2.2010,  12:44 Найти цитируемый пост)
На [0-9а-яА-Я] оно отрабатывает, однако, нужно чтобы внутри строки могли быть любые символы, скажем < или & и т.д. Задача просто выделить все подстроки "..." из общей строки. Как можно поступить в этом случае? 

Код

            string input = @"Мама мыла ""раму"" с мылом";
            string reg = @"\""(.*)\""";
            string result = Regex.Match(input, reg).Value;
            Console.WriteLine(result);

Автор: Алексеу 3.2.2010, 16:47
Большое спасибо!
Так отработало!

Автор: forumspy 7.2.2010, 04:44
Цитата(Алексеу @ 3.2.2010,  16:47)
Большое спасибо!
Так отработало!

  Подскажите, а какой именно вариант сработал.

Автор: Ceiceron 7.2.2010, 14:19
forumspy,  smile 
очевидно последний.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)