2014-03-06 112 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