解析する必要がある不適切な形式の XML があります。上流で問題を修正することはできません。
(現在の) 問題は、アンパサンド文字が常に適切にエスケープされるとは限らないため、次のように変換する必要があることです&
。&
が既にある場合&
は、に変更したくありません&
。一般に、整形式のエンティティが既にそこにある場合、それを破棄したくありません。一般に、特定の XML 文書に現れる可能性のあるすべてのエンティティーを知ることは不可能だと思います&<characters>;
。
<characters>
イニシャル&
とクロージングの間のエンティティを定義する文字のセットはどこにありますか;
。特に、<
and>
は、そうでなければ XML 要素を表すリテラルではありません。
ここで、解析中に&<characters>
、;
a (スペース)、行末、または別の
&
. <characters>
なので原作をどうするか教えてくれるキャラクターを先を見ながら覚えておかなければいけないと思います&
。
これを行うには、プッシュ ダウン オートマトンの力が必要だと思います。メモリ要件があると考えられるため、Finite State Machine が機能するとは思いません。それは正しいですか? PDA が必要な場合、呼び出しの正規表現は機能しString.replaceAll(String, String)
ません。または、この問題を解決できる Java 正規表現はありますか?
注意: 1 行に複数の置換がある可能性があります。
(私はこの質問を認識していますが、私が探している答えを提供していません。)