![]() |
|
Модераторы: ginnie |
![]()
|
|
| Gangleon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
Помогите составить регулярное выражение, у меня не выходит.
Есть строка, например: Много-много текста в стрке ++index еще текст i++ еще текст GetDocManager()->MatchTemplate = 0 Отсюда надо изъять в одну переменную ++index, в другую i++, в третью GetDocManager()->MatchTemplate. Лучше это делать в разных наверно проверках, так как кроме этих случаев есть множество аналогичных. Спасибо) |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
Gangleon, пример приведите "из жизни".
|
|||
|
||||
| Gangleon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
Это и был реальный пример. если конкретней - у меня есть прога на C++, для которой нужно написать парсер, который будет выводить все "двусимвольные" операции, типа ++, -> и тогдалее.
|
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
Я просил показать, что вы хотите "парсить" (исходные данные).
А так по теме выходит не очень впечатляющий код ;)
Это сообщение отредактировал(а) nitr - 1.6.2008, 22:49 |
|||
|
||||
| Gangleon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
Спасибо, но это все не то. Мне надо другое - есть например текст.
devName = printDevice; while (*printDevice) { if (*printDevice == ',') { *printDevice++ = 0; if (!driverName) driverName = printDevice; else outputName = printDevice; } else printDevice = ::AnsiNext(printDevice); } if (Printer->GetSetup().Error != 0 || strcmp(devName, Printer->GetSetup().GetDeviceName()) != 0 || strcmp(driverName, Printer->GetSetup().GetDriverName()) != 0 || strcmp(outputName, Printer->GetSetup().GetOutputName()) != 0 ) { // New printer installed so get the new printer device now. // delete Printer; Printer = new TPrinter(this); } } else { // No printer installed(GetProfileString failed). // delete Printer; Printer = new TPrinter(this); } } } От сюда надо вытащить все операторы - например все операции казательно ++ - результатом должен вывестись *printDevice++, Для оператора -> : Printer->GetSetup().GetDeviceName() Printer->GetSetup().GetDriverName() Printer->GetSetup().GetOutputName() В этом вся сложность - что мы не знаем что стоит справа и слева. |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
Вариантов много, вот одно из них:
|
|||
|
||||
| Gangleon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
Nitr, огромное спасибо! Ты гений^_^
|
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: нет Всего: 84 |
Gangleon, спасибо, но ничего гениального нет
Этот код можно улучшить и "преобразить" - идею я вам подал... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Регулярные выражения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |