Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 17
1

Обработка каждого совпадения регулярки отдельно

12.05.2013, 07:08. Просмотров 449. Ответов 3
Метки нет (Все метки)


Ребят выручайте. Уже голова не соображает. Жо№№й кверху это все работает как то, но неважно.. Это то что я сам придумал, никто не помогал. Теперь реально нужна помошь... Вот код.

C#
1
2
3
4
5
6
7
8
9
  string a = @"(<p>([^<]+)</p>)";    
            Regex second = new Regex(a, RegexOptions.IgnoreCase);
            Match mi = second.Match(richTextBox1.Text);
            while (mi.Success)
            {  richTextBox1.SelectionStart = mi.Index;
                richTextBox1.SelectionLength = mi.Length;
                richTextBox1.SelectedText = ("!");             
               
            }
Проблема в том что он регулярка нашла все освпадения, запомнила их позицию и длину, а когда я целую строку заменил на "!" то все испортил. Надеюсь понятно? Вопрос жизни и смерти! Как сделать так чтобы регулярка находила соответсвие - обрабатывала его и затем опять искала соответсвия но уже в изменённом текста и так до конца. А не сначала все соответсвия, а потом действия над ними. Буду ОЧЕНЬ! благодарен любым советам по теме.

Добавлено через 2 минуты
Или быть может вы подскажете какой нибудь другой метод решения? Я методом проб и ошибок как то пришёл к такому методу(сохраняем индекс совпадения и длину, выделяем, применяем).. Пытался с Value как нибудь сделать, но он только для чтения, ничего не вышло..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2013, 07:08
Ответы с готовыми решениями:

Регулярки - вывод каждого второго результата
Вобщем есть html страница,есть регулярка,она парсит. Но мне нужно добавлять только каждый второй...

Вывести общее количество зерна (в центнерах) отдельно каждого сорта для каждого района
О поступлении с элеваторов к зернохранилища зерна I, II и III сорта Структура записи: • название...

Пользователь вводит отдельно строку и символ, необходимо показать на экран номер только последнего совпадения
Знает кто-то, как решить задачу на С++?При помощи строк. Пользователь вводит отдельно строку и...

Обработка ЗагрузкаДанныхИзФайла - грузит, но не ищет совпадения
Всем привет! Конфигурация на основе &quot;БСП 2.2.5.36&quot;. Использую обработку из библиотеки...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы С#-разработчиков‌
3
1014 / 850 / 224
Регистрация: 15.06.2012
Сообщений: 3,374
Записей в блоге: 1
12.05.2013, 07:43 2
Ну, если у вас всё отлично с количеством и расстановкой тегов, то можно вот так:

C#
1
2
3
4
5
6
7
8
9
int begin = 0, end,;
while (begin = richTextBox1.Text.IndexOf("<p>", begin) != -1)
{
  end = richTextBox1.Text.IndexOf("</p>", begin);
  richTextBox1.SelectionStart = begin + 3;
  richTextBox1.SelectionLength = begin - end - 3;
  richTextBox1.SelectedText = ("!");
  begin++;
}
Вот только строку "<p>Hello!<p> It's problem</p> 12-12-2013</p>" покромсает на "<p>!</p> 12-12-2013</p>"
0
0 / 0 / 0
Регистрация: 10.05.2013
Сообщений: 17
12.05.2013, 08:08  [ТС] 3
а никак нельзя рекурсией? Ну типа метод в нём моя регулярка(работать только с ними)
C#
1
2
3
4
5
6
7
8
9
string a = @"(<p>([^<]+)</p>)";    
            Regex second = new Regex(a, RegexOptions.IgnoreCase);
            Match mi = second.Match(richTextBox1.Text);
            while (mi.Success)
            {  richTextBox1.SelectionStart = mi.Index;
                richTextBox1.SelectionLength = mi.Length;
                richTextBox1.SelectedText = ("!");             
<тут вызвать опять эту же процедуру(как это сделать)>               
            }
Если я несу фигню. извините
0
1014 / 850 / 224
Регистрация: 15.06.2012
Сообщений: 3,374
Записей в блоге: 1
12.05.2013, 17:50 4
Цитата Сообщение от timbi Посмотреть сообщение
а никак нельзя рекурсией?
Можно, но я не знаю как правильно написать регулярку для проверки.

P.S. Почему если "работа со строками", то обязательно через регулярку?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2013, 17:50

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Отображение переменной для каждого id отдельно
Короче сразу скажу что я вообще не о чем в пхп, так знаю основные принципы. Так что без обид....

Массив: из исходного массива создать 2й ObjTableSort, который бы объединял x, y, z для каждого совпадения name
Доброго времени суток. Не так давно увлекся Lua и в процессе написания массивов возникли проблемы,...

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

@media screen отдельно для каждого модуля., недостатки?
Я вот подумал, а не лучше ли будет задавать @media screen для каждого логического блока? Да будет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.