String newHtml = oldHtml.replaceFirst("(?s)(<head>)(.*?)(</head>)","$1$3");
Explanation:
oldHtml.replaceFirst(" // we want to match only one occurrance (?s) // we need to turn Pattern.DOTALL mode on // (. matches everything, including line breaks) (<head>) // match the start tag and store it in group $1 (.*?) // put contents in group $2, .*? will match non-greedy, // ie select the shortest possible match (</head>) // match the end tag and store it in group $3 ","$1$3"); // replace with contents of group $1 and $3
source share