![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Добрый день!
В переменной $a содержится следующий текст: ------------------------------------------------------------------------------------------------------------------------------------------------------ Величина \par\pard\plain \intbl\fi720\qj\hyphpar1 показателя \qc\hyphpar1 \cell \row \trowd\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10 ------------------------------------------------------------------------------------------------------------------------------------------------------ Необходимо перед строчкой "\par\pard\plain" добавить строчку "\qc\hyphpar1" но только в том случае, если: 1) где-то ниже есть строчка "\cell" 2) между строчкой "\cell" и строчкой "\par\pard\plain" нет строчки "\trowd" Т.е. необходимо преобразовать переменную к виду: ------------------------------------------------------------------------------------------------------------------------------------------------------ Величина \qc\hyphpar1 \par\pard\plain \intbl\fi720\qj\hyphpar1 показателя \qc\hyphpar1 \cell \row \trowd\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10 ------------------------------------------------------------------------------------------------------------------------------------------------------ Это сообщение отредактировал(а) Suppir - 8.12.2010, 14:31 |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
Только одним регулярным выражением? Одним пока не получается, но буду пробовать
|
|||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Да, нужно только одним регулярным выражением.
Потому что будет использоваться не с Perl, а с PCRE. |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
|
|||
|
||||
| patap |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: нет Всего: 40 |
должно вернуть подстроку \par\pard\plain, если удовлетворит двум условиям
Это сообщение отредактировал(а) patap - 8.12.2010, 18:43 -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
|||
|
||||
| Suppir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 588 Регистрация: 20.4.2009 Репутация: нет Всего: нет |
Спасибо!
Получилось сделать более простым способом (но не в одно регулярное выражение): local $spl = StringSplit($rtf, @CRLF, 3) local $cell = 0 for $x = 0 to Ubound ($spl) - 1 if StringRegExp($spl[$x], "\\cell$") Then $cell = 0 if StringRegExp($spl[$x], "\\trowd\\") Then $cell = 1 if StringRegExp($spl[$x], "\\par\\pard\\plain") And $cell = 1 Then $spl[$x] = "\qc\hyphpar1\par\pard\plain" Next (это не Perl, но регулярки PCRE) Добавлено через 5 минут и 55 секунд P.s. Пишу скрипт, который в делает пакетную замену с помощью регулярных выражений в RTF-данных. Пользователь выделяет в программе (типа ворда) "грязный" текст и нажимает хоткей. Скрипт вытягивает RTF-данные через буфер обмена, перекодирует, обрабатывает множеством регулярных выражений, после чего аккуратно вставляет обратно в буфер. Потом посылает программно CTRL+INSERT - и вуаля, в программе у пользователя чистенький, красиво отформатированный текст. |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |