FreePascal/Lazarus で RegExp 置換を行う簡単な方法はありますか?
探し回ってみると、かなり簡単に一致させることができることがわかりますが、検索と置換を行う関数を見つけるのに苦労しています。
私が達成しようとしていることは次のとおりです。
- SynEdit コンポーネントに XML ファイルをロードしました。
- XML ファイルの先頭に宣言があります
- DTD は別のファイルに保持されます。
- この 2 つを 1 つのファイルにまとめたくはありませんが、編集中の XML を検証したいと考えています。
- XML を文字列変数に読み込んでおり、解析および検証可能な一時文字列変数の XML コンテンツとの間に DTD を挿入したいと考えています (自己完結型 DTD を使用して準拠した XML を作成するため)。
だから本質的に私は持っています:
<?Line1?>
Line2
Line3
そして、RegExp タイプの検索を実行して、'<?Line1?>' を '<?Line1?>\n<![DTD\nINFO WOULD\nGO HERE\n!]' に置き換えて、次のように置き換えます。
<?Line1?>
<![DTD
INFO WOULD
GO HERE
!]
Line2
Line3
たとえば、PHP では次のように使用します。
preg_replace('/(<\?.*\?>)/im','$1
<![DTD
INFO WOULD
GO HERE
!]',$sourcestring);
しかし、FreePascal / Lazarus に相当する正規表現関数のセットはないようです - 単なる単純/基本的な正規表現一致関数です。
または、正規表現を使用せずに簡単な方法がありますか?ただし、宣言が常に行 1 の正しい位置にあるとは想定したくありません-物事を複雑にするためです。
ありがとう、
FM