私は次のようなパターンを持っています:<[a-zA-Z][^>]*(?:poster|src)=(['\"])([^'\"]+)\\1[^>]*>
ここでは、src または poster 属性の値を置き換えたいと思います。
大丈夫です
<video src='srcVal' />
と
<video poster='posterVal' src='srcVal' />
しかし、
<video poster='posterVal' src='srcVal' />
matcher.group(2)
のみを返すため、src 値のみを変更しますsrcVal
。
public class Test {
public static void main(String[] args) throws Exception {
String html = "<video poster='posterVal' src='srcVal' />";
Pattern resourcePattern = Pattern.compile("<[a-zA-Z][^>]*(?:poster|src)=(['\"])([^'\"]+)\\1[^>]*>");
Matcher matcher = resourcePattern.matcher(html);
int last = 0;
StringBuilder sb = new StringBuilder();
while(matcher.find()) {
String path = matcher.group(2) + "Changed";
sb.append( html.substring(last, matcher.start(2)) + path );
last = matcher.end(2);
}
sb.append(html.substring(last));
System.out.println(sb);
//outputs <video poster='posterVal' src='srcValChanged' />
//expecting <video poster='posterValChanged' src='srcValChanged' />
}
}
これを行う方法を考えている体はありますか?