我有一個文件,可以從具有RTF格式標記的Microsoft Lync對話中提取值。一個例子文件將是這樣的:Lua模式匹配
{\ RTF1 \ fbidis \ ANSI \ ansicpg1252 \ deff0 \ nouicompat \ deflang1033 {\ fonttbl {\ F0 \ fnil \ fcharset0>瀨越UI;} {\ F1 \ fnil瀨越UI ;}} {\ colortbl; \ red0 \ green0 \ blue0;} {* \ generator Riched20 15.0.4420} {* \ mmathPr \ mwrapIndent1440} \ viewkind4 \ uc1 \ pard \ cf1 \ embo \ f0 \ fs20 Craig。 .. \ embo0 \ embo \ embo0 \ embo \ embo \ embo \ embo \ embo \ embo \ embo \ embo \ embo \ embo \ embo \ embo \ embo \ embo \ embo \打開\ embo0 \ f1 \ par {* \ lyncflags rtf = 1}}
使用Lua腳本我試試刪除RTF標籤,然後取出對話文本。因此,我的函數的結果應該是:
克雷格......請閉上你的老客戶了,然後重新打開
我使用string.gsub用正則表達式匹配嘗試模式並用空格替換它們以僅留下文本但它不起作用。這裏是我到目前爲止的代碼字符串.gsub:
result = string.gsub(s, "\{\*?\\[^{}]+}|[{}]|\\\n?[A-Za-z]+\n?(?:-?\d+)?[ ]?", " ")
任何建議將不勝感激!
附加:
[email protected] @ 2013年1月18日17:48:03Z(TO:[email protected])
{\ 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 \面值 {* \ lyncflags RTF = 1}}
[email protected] @ 2013年1月18日17:48:57Z(TO:[email protected])
{\ RTF1 \ fbidis \ ANSI \ ansicpg1252 \ deff0 \ nouicompat \ deflang1033 {\ fonttbl {\ F0 \ fnil \ fcharset0瀨越UI;} {\ F1 \ fnil瀨越UI;}} {\ colortbl; \ red0 \ green0 \ blue0;} {* \ generator Riched20 15.0.44 20} {* \ mmathPr \ mwrapIndent1440} \ viewkind4 \ uc1 \ pard \ cf1 \ embo \ f0 \ fs20 I \ embo0 \ embo請參閱\ embo0 \ embo it \ embo0 \ f1 \ par {* \ lyncflags rtf = 1} }
[email protected] @ 2013年1月18日17:49:27Z(TO:用戶2 @資本。COM)
{\ RTF1 \ fbidis \ ANSI \ ansicpg1252 \ deff0 \ nouicompat \ deflang1033 {\ fonttbl {\ F0 \ fnil \ fcharset0瀨越UI;} {\ F1 \ fnil瀨越UI;}} {\\ colortbl; \ red0 \ green0 \ blue0;} {* \ generator Riched20 15.0.4420} {* \ mmathPr \ mwrapIndent1440} \ viewkind4 \ uc1 \ pard \ cf1 \ embo \ f0 \ fs20 let's \ embo0 \ embo try \ embo0 \ EMBO一個\ embo0 \ EMBO會議。\ embo0 \ F1 \面值 {* \ lyncflags RTF = 1}}
歡迎來到StackOverflow!你給出的正則表達式的輸出結果是什麼? – andrewdotnich
如果最終您仍然不滿意模式匹配解決方案,則可能需要檢查[lpeg](http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html)庫 – hugomg