ユーザーがアップロードした RTF ドキュメントを取得し、一部の個人データ (名前、住所など) をレターにマージし、複数の人に対してこれを行うスクリプトがあります。すべての人のレコードについて、レターの内容をマージし、それを次のマージ レターの内容と結合します。
手紙をマージする必要がある人のレコードと同じ数だけ、1 つの RTF ドキュメントをそれ自体に結合しています。ただし、各マージの終了 RTF マークアップと開始 RTF マークアップを最初に削除する必要があります。そうしないと、RTF が正しくレンダリングされません。これは正規表現の仕事のように思えます。
基本的に、文字列全体を削除する正規表現が必要です。
}\n\page 何でも\par
たとえば、この正規表現は次のように一致します。
crap
}
\page{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 September 30, 2008\par
more crap
だから私はそれを作ることができます:
crap
\page
more crap
正規表現はここで最良のアプローチですか?
更新: RTF を使用する必要があるのはなぜですか?
ユーザーが定型書簡をアップロードできるようにして、システムがそれを使用して結合された書簡を作成できるようにしたいと考えています。RTF はプレーン テキストであるため、これはコードで非常に簡単に行うことができます。RTF が仕様の惨事であることは知っていますが、他に良い代替手段を知りません。