|
1
64
在RTF中,{和}标记一个组。可以嵌套组。\标记控制字的开头。控制字以空格或非字母字符结尾。控制字后面可以有一个数字参数,中间不能有任何分隔符。一些控制字还采用文本参数,以“;”分隔。这些控制词通常在它们自己的组中。 我想我已经成功地建立了一个模式来处理大多数案件。
但在您的模式上运行时,它会留下一些空间。 通过 RTF specification (其中一些),我发现纯基于regex的脱衣舞者有很多陷阱。最明显的一点是,一些组应该被忽略(页眉、页脚等),而其他组应该被呈现(格式化)。 我已经编写了一个Python脚本,它应该比上面的正则表达式工作得更好:
它通过解析RTF代码来工作,并跳过指定了“目的地”的任何组以及所有“可忽略”的组(
要使它成为一个完整的解析器,还缺少很多功能,但对于简单的文档来说应该已经足够了。 更新日期: 此url更新了此脚本以在Python 3上运行。x: https://gist.github.com/gilsondev/7c1d2d753ddb522e7bc22511cfb08676 |
![]() |
2
7
我以前用过这个,它对我有用:
您可能需要修剪结果的末端,以消除剩余的额外空间。 |
![]() |
3
7
到目前为止,除了使用RichTextBox控件之外,我们还没有找到一个很好的答案:
编辑:添加了IsRichText方法。 |
![]() |
4
4
我用JavaScript制作了这个助手函数。到目前为止,对于我来说,这对于简单的RTF格式删除非常有效。
值得注意的是:
编辑:我已经更新了正则表达式,以解决自最初发布此内容以来发现的一些问题。我在一个项目中使用它,请在此处上下文中查看: https://github.com/chrismbarr/LyricConverter/blob/865f17613ee8f43fbeedeba900009051c0aa2826/scripts/parser.js#L26-L37 |
![]() |
5
3
Regex永远不会百分之百地解决这个问题,您需要一个解析器。 在CodeProject中检查此实现(虽然是在C中): http://www.codeproject.com/Articles/27431/Writing-Your-Own-RTF-Converter |
![]() |
6
2
根据 RegexPal ,这两个}是下面加粗的:
我可以通过在正则表达式中添加加号来修复第一个大括号:
为了固定末端的花括号,我做了如下操作:
我不太了解RTF格式,所以这可能不会在所有情况下都适用,但它适用于您的示例。。。 |
![]() |
7
2
虽然贡献者较晚,但下面的正则表达式帮助我们使用了在DB中找到的RTF代码(我们通过SSRS在RDL中使用它)。 这个表达式为我们的团队删除了它。虽然它可能只是解决我们特定的RTF,但它可能对某些人有帮助。尽管这种webby非常方便进行现场测试。
希望这有帮助, K |
![]() |
8
1
没有一个答案是足够的,所以我的解决方案是使用RichTextBox控件(是的,即使在非Winform应用程序中也是如此)从RTF中提取文本 |
![]() |
9
1
下面是一条Oracle SQL语句,它可以从Oracle字段中剥离RTF:
这是为来自Windows富文本控件的数据而设计的,而不是RTF文件。 限制包括:
它通过首先移除
|
![]() |
10
1
以下解决方案允许您从RTF字符串中提取文本:
|
![]() |
DotFX · RegEx捕获关键字前但括号后的所有内容 4 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 4 月前 |
![]() |
iato · 确保正则表达式不从命名材料中的数字中提取 5 月前 |
![]() |
vr8ce · 非成对标记中特定字符的正则表达式 5 月前 |
![]() |
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 5 月前 |
![]() |
Carsten · 使用最近的搜索模式更改文本块 5 月前 |