【发布时间】:2013-01-19 17:48:36
【问题描述】:
我有一个从 Microsoft Lync 对话中提取值的文件,该对话具有 RTF 格式标记。示例文件如下:
{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 >Segoe UI;}{\f1\fnil Segoe UI;}} {\colortbl ;\red0\green0\blue0;} {*\generator Riched20 15.0.4420}{*\mmathPr\mwrapIndent1440 }\viewkind4\uc1 \pard\cf1\embo\f0\fs20 Craig...\embo0 \embo please\embo0 \embo close\embo0 \embo >out\embo0 \embo of\embo0 \embo your\embo0 \embo old\embo0 \embo 客户\embo0 \embo >and\embo0 \embo re-open\embo0\f1\par {*\lyncflags rtf=1}}
使用 Lua 脚本,我正在尝试删除 RTF 标签并仅提取对话文本。所以我的函数的结果应该是:
Craig...请关闭您的旧客户端并重新打开
我尝试使用带有正则表达式的 string.gsub 来匹配模式并用空格替换它们以只留下文本,但它不起作用。这是我目前为 string.gsub 编写的代码:
result = string.gsub(s, "\{\*?\\[^{}]+}|[{}]|\\\n?[A-Za-z]+\n?(?:-?\d+)?[ ]?", " ")
任何建议将不胜感激!
补充:
user1@capital.com @ 2013-01-18 17:48:03Z (TO: user2@capital.com)
{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Segoe UI;}{\f1\fnil Segoe UI;}} {\colortbl ;\red0\green0\blue0;} {*\generator Riched20 15.0.4420}{*\mmathPr\mwrapIndent1440 }\viewkind4\uc1 \pard\cf1\embo\f0\fs20 works\embo0 \embo for\embo0 \embo me..\embo0 \embo how\embo0 \embo about\embo0 \embo embedding\embo0 \embo pictures?\embo0\f1\par {*\lyncflags rtf=1}}
user1@capital.com @ 2013-01-18 17:48:57Z (TO: user2@capital.com)
{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Segoe UI;}{\f1\fnil Segoe UI;}} {\colortbl ;\red0\green0\blue0;} {*\generator Riched20 15.0.4420}{*\mmathPr\mwrapIndent1440 }\viewkind4\uc1 \pard\cf1\embo\f0\fs20 I\embo0 \embo see\embo0 \embo it\embo0\f1\par {*\lyncflags rtf=1}}
user1@capital.com @ 2013-01-18 17:49:27Z (TO: user2@capital.com)
{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Segoe UI;}{\f1\fnil Segoe UI;}} {\colortbl ;\red0\green0\blue0;} {*\generator Riched20 15.0.4420}{*\mmathPr\mwrapIndent1440 }\viewkind4\uc1 \pard\cf1\embo\f0\fs20 让我们\embo0 \embo 尝试\embo0 \embo a\embo0 \embo 会议。\embo0\f1\par {*\lyncflags rtf=1}}
【问题讨论】:
-
欢迎来到 StackOverflow!您给出的正则表达式会产生什么输出?
-
如果最终您对模式匹配解决方案仍然不满意,您可能需要查看lpeg 库
标签: lua lua-patterns