Simplify regular expression replacement

This commit is contained in:
Andrew Gaul 2012-11-11 19:30:32 -08:00
parent 49dd8f96db
commit 03c287dfa1
1 changed files with 3 additions and 11 deletions

View File

@ -36,7 +36,7 @@ import com.google.common.base.Function;
@Singleton
public class ETagFromHttpResponseViaRegex implements Function<HttpResponse, String> {
private static Pattern pattern = Pattern.compile("<ETag>([\\S&&[^<]]+)</ETag>");
private static Pattern quotPattern = Pattern.compile("(&quot;)");
private static String ESCAPED_QUOTE = "&quot;";
private final ReturnStringIf2xx returnStringIf200;
@Inject
@ -52,16 +52,8 @@ public class ETagFromHttpResponseViaRegex implements Function<HttpResponse, Stri
Matcher matcher = pattern.matcher(content);
if (matcher.find()) {
value = matcher.group(1);
Matcher quotMatcher = quotPattern.matcher(value);
StringBuffer quotBuffer = new StringBuffer();
boolean foundUnescapedQuote = false;
while (quotMatcher.find()) {
quotMatcher.appendReplacement(quotBuffer, "\"");
foundUnescapedQuote = true;
}
if (foundUnescapedQuote) {
quotMatcher.appendTail(quotBuffer);
value = quotBuffer.toString();
if (value.indexOf(ESCAPED_QUOTE) != -1) {
value = value.replace(ESCAPED_QUOTE, "\"");
}
}
}