Требуется помощь по шаблону регулярных выражений - PullRequest
0 голосов
/ 27 ноября 2009

Необработанная строка выглядит следующим образом:

{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\froman\fcharset0 Times New Roman;}{\f1\fnil\fcharset0 MS Shell Dlg 2;}}
\viewkind4\uc1\pard\sb100\sa100\f0\fs24\u30340?\u27494?\u35013?\u20998?\u23376?\u65292?23\u26085?\u22312?\u33778?\u24459?\u23486?\u21335?\u37096?\u30340?\u39532?\u20140?\par
\pard\f1\fs17\par
by: lena (11/26/09)\par
\par
}

Что такое шаблон регулярного выражения, который заменяет все теги RTF после косой черты на "" пустую строку, кроме \unumbers? Результат должен выглядеть примерно так:

\u30340?\u27494?\u35013?\u20998?\u23376?\u65292?23\u26085?\u22312?\u33778?\u24459?\u23486?\u21335?\u37096?\u30340?\u39532?\u20140?
by: lena (11/26/09)

Я попытался "\\\\\\w+|\\{.*?\\}|\\}", который удаляет все, что следует за обратной косой чертой, и все фигурные скобки. Недостающая часть что-то вроде \\!(\\\\u)

1 Ответ

0 голосов
/ 27 ноября 2009

Попробуйте сопоставить теги, которые вы хотите сохранить первыми, и заменить их.

# php
$str = preg_replace('/(\\\u[\d]+)|\\\+[\w\?]+|{.*?}/', '$1', $str);

# perl
$str =~ s/(\\\u[\d]+)|\\\+[\w\?]+|{.*?}/$1/g;
...