&をHTMLエンティティの一部ではない文字列に置き換える必要があります。文字列 "この& entitesは>
& <
" 返すよう正規表現の最適化 - Javaでアンパサンドをエスケープする
そして私は、この正規表現パターンを作ってみた "> & <
この&
entites": "& [-ZA-Z0-9] {2 、7}; "うまく動作します。 しかし、私は正規表現にあまり熟練していないので、100k回以上の速度をテストすると、正規表現を使わなかった以前の使用されていた方法より2倍の時間がかかります。 (しかし、いずれも100%働いていませんでした)。
Testcode:
long time = System.currentTimeMillis();
String reg = "&(?!&#?[a-zA-Z0-9]{2,7};)";
String s="a regex test 1 & 2 1&2 and &_gt; - &_lt;"
for (int i = 0; i < 100000; i++) {test=s.replaceAll(reg, "&");}
System.out.println("Finished in:" + (System.currentTimeMillis() - time) + " milliseconds");
そこで問題は、最適化のいくつかの明白な方法は、それがより効果的にするために、この正規表現式があるかどうかだろうか?
私のようなアンダースコアで&_gt;をentitesを書かなければならなかったか、そうでなければ、コードがためだったのシンボルとして表示したいです。 – Duveit
ほとんど4人がテキストを編集して、アンパサンドをコード形式の引用符で囲みようとしました。必要なテキストを選択してコードを使用するだけで、アンパサンドは保持されます。 – cgp