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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2013, 14:52   #1
timbi
 
Регистрация: 12.11.2012
Сообщений: 4
По умолчанию Вопросы по регулярным выражениям

Уважаемые форумчане, прошу вашей помощи т.к. сам бесплодно бился целый день. Проблема в следующем - нужно заменить содержимое тегов <a href="url">text</a> на text(url). Реализовать это регулярными выражениями. Я что только не пробовал, где только не спрашивал. Может я упустил какую то важную деталь, я не знаю. Все остальное получается, кроме этого(удаление всех html тегов, сохранить форматирование текста и т.д.) Я сделал кое какие наброски... Работает, но очень криво. Смотрите (я пробовал на <p>text</p>. Это проще чем <a href=...> )
Код:
private void bu()
        {
            string afterp = @"(<p>(?'text'[^<]+)</p>)";            
            foreach (Match m in Regex.Matches(richTextBox1.Text, afterp))
            {  richTextBox1.SelectionStart = m.Index;
                richTextBox1.SelectionLength = m.Length;           
                richTextBox1.SelectedText = (m.Groups["text"].ToString());
                richTextBox2.Text += (m.Value.ToString());
                bu();
                             
        
            }
. Это я уже через рекурсию пробовал. Потому что без рекурсии сбиваются все индексы(первое совпадение заменяется и все полетело). Но и с рекурсией какая то беда выходит. смотрите.(Ввожу строку <p>Привет</p>
<p>Всем</p>
Должен получить Привет Всем. А получаю: Привет
ВсемВсем. Очень надеюсь на вашу помощь. Спасибо заранее! Может быть есть более простой способ? без(SelectionStart = m.Index; SelectionLength = m.Length) ? )
timbi вне форума Ответить с цитированием
Старый 12.05.2013, 16:47   #2
timbi
 
Регистрация: 12.11.2012
Сообщений: 4
По умолчанию

Ребят что совсем никто не знает?
timbi вне форума Ответить с цитированием
Старый 12.05.2013, 17:17   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
Regex.Replace(Тут та строка,"<a href=\"(\\w+)\"\\>(\\w+)</a>","$2($1)")
Должно сработать
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2013, 17:38   #4
timbi
 
Регистрация: 12.11.2012
Сообщений: 4
По умолчанию

Блин... Спасибо тебе огромное! Ты мне очень помог! Я не знал что можно ""$2($1)"" так делать. Я выделениями, переприсваиваниями делал все. Ещё раз спасибо!!
timbi вне форума Ответить с цитированием
Старый 12.05.2013, 18:57   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
не знал что можно ""$2($1)"" так делать
Ну сказалось нежелание поглубжее изучить регулярки
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по регуярным выражениям PHP three_cats PHP 1 04.04.2013 15:51
Проблема с регулярным выражением kakawkin PHP 0 13.09.2012 01:34
Вопрос по регулярным выражениям fantom_ZET PHP 10 10.12.2010 23:26
Проблема с регулярным выражением ssdm PHP 14 25.02.2010 12:55
Помогите с регулярным вырежением [EX]n1 Помощь студентам 2 04.01.2010 15:34