2014-03-06 144 views
1

有誰知道任何可以將所有RTF標記字符串串起來的庫或Regex模式?例如,下面的字符串:從字符串中去除RTF標記

{\field\flddirty{\*\fldinst ref {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid11370280\charrsid4074187 MERG}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid15665935 
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid11370280\charrsid4074187 EFIELD details_awardee_name }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1024\langfe1024\noproof\insrsid11370280\charrsid4074187 \'abdetails_awardee_name\'bb}}} 

這應該被剝離下來MERGEFIELD details_awardee_name

+0

好奇:這哪裏是輸入來自和用的是什麼呢? –

+3

未測試:http://webcheatsheet.com/php/reading_the_clean_text_from_rtf.php – naththedeveloper

+0

韋斯利,這是一個後續的問題,以前的線程我開始,http://stackoverflow.com/questions/22224587/find-coresponding-open -close-brackets/ – jason

回答

0

由於我不知道規則解析(RTF)他們嵌套標籤,我只是發佈這個,這似乎
過濾一些混亂。

# Raw:  \\[^\s]*\s*|[{}]+\s* 
    # Delimited: '/\\\[^\s]*\s*|[{}]+\s*/' 

    \\ [^\s]* \s* 
| [{}]+ \s* 

Perl的測試案例 -

$/ = undef; 
$str = <DATA>; 

$str =~ s/\\[^\s]*\s*|[{}]+\s*//g; 

print "'$str'\n"; 

__DATA__ 
{\field\flddirty{\*\fldinst ref {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid11370280\charrsid4074187 MERG}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid15665935 
\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\insrsid11370280\charrsid4074187 EFIELD details_awardee_name }}{\fldrslt {\rtlch\fcs1 \af0 \ltrch\fcs0 \b\lang1024\langfe1024\noproof\insrsid11370280\charrsid4074187 \'abdetails_awardee_name\'bb}}} 

輸出>>

'ref MERGEFIELD details_awardee_name ' 
+0

謝謝。在PHP中,它被轉換爲如下形式:preg_replace('/ \\\\ [^ \\ s] * \\ s * | [{}] + \\ s * /','',$ foundString); – jason