データをXMLで持っている時にDOMなどのXML Objectに読ませないでデータを消したい場合によくStringでの置換が使われていた。
その時の話である。
消したいタグを以下のように置換していた。
String xmlStringData = getXMLfile();
xmlStringData = xmlStringData.replaceAll("<ABB000001.*?</ABB00001>", "");
消えないということがあった。調査を進めるうちにタグ間のデータが文字列であり正規表現の"*"に想定する箇所に改行データが入る場合があったからだ。
この場合PatternのDOTALLモードを使っって処理をした。
import java.util.regex.Pattern;
String xmlStringData = getXMLfile();
xmlStringData = Pattern.compile("<ABB000001.*?</ABB00001>", Pattern.DOTALL).matcher(xmlStringData).replaceAll("");
無事置換できタグを削除できた。