私はこのようなJava文字列を持っています:
String string = "I <strong>really</strong> want to get rid of the strong-tags!";
そして、タグを削除したいと思います。タグがはるかに長い他の文字列があるので、それらの文字を含む「<>」文字の間のすべてを削除する方法を見つけたいと思います。
1つの方法は、文字列を正規表現と比較する組み込みの文字列メソッドを使用することですが、それらの記述方法がわかりません。
正規表現を使用してHTMLを解析する場合は注意が必要です(許容できる複雑さのため)。ただし、「単純な」HTMLおよび単純なテキスト(リテラル<
またはその>
中にないテキスト)の場合、これは機能します。
String stripped = html.replaceAll("<.*?>", "");
正規表現を回避するには:
String toRemove = StringUtils.substringBetween(string, "<", ">");
String result = StringUtils.remove(string, "<" + toRemove + ">");
複数のインスタンスの場合:
String[] allToRemove = StringUtils.substringsBetween(string, "<", ">");
String result = string;
for (String toRemove : allToRemove) {
result = StringUtils.remove(result, "<" + toRemove + ">");
}
Apache StringUtils関数はnull、空、およびマッチセーフではありません
あなたは使用する必要があります
String stripped = html.replaceAll("<[^>]*>", "");
String stripped = html.replaceAll("<[^<>]*>", "");
ここで、は、で<[^>]*>
始まる部分文字列に一致し<
、次に0個以上の文字以外>
(または2番目のバージョンを選択した場合は<
それ以外の文字)、次に文字に一致します。>
>
ご了承ください<.*?>
(?s)<.*?>
解決できます。<(?s:.)*?>
<[\w\W]*?>
正規表現のデモを参照してください。