運行結果: html
package base; java
import java.util.regex.Matcher;
import java.util.regex.Pattern; node
public class ZYJ { app
/**
* @param args
*/
public static void main(String[] args) {
String htmlStr = "<img class=\"articleImg\" nodes=\"%5B%5D\" src=\"http://img.jcbzw315.com/upload/user/space/32777/2016/04/30/59cfbcc5-2888-49a6-91fe-37529d1d819b.jpg\" style=\"\">";
System.out.println("開始:" + htmlStr);
htmlStr = ZYJ.changeHtmlTag(htmlStr, "img", "src", "data-original", "\"");
htmlStr = ZYJ.updateAllHtmlTag(htmlStr, "img", "src", "/assets/images/pub/loading_bg.gif", "\"");
System.out.println("最終: " + ZYJ.updateHtmlTag(htmlStr, "img", "class", "", " lazy\""));
} spa
/**
* @param htmlStr
* html文本
* @param searchTag
* 要修改的目標標籤
* @param searchAttrib
* 目標標籤中的屬性
* @param newStr
* 修改值 保留本來
*/
public static String updateHtmlTag(String htmlStr, String searchTag, String searchAttrib, String startStr, String endStr) {
String regxpForTag = "<\\s*" + searchTag + "\\s+([^>]*)\\s*>";
String regxpForTagAttrib = searchAttrib + "\\s*=\\s*[\"|']([^\"|']+)[\"|']";// "=[\"|']http://([^[\"|']]+)[\"|']";
Pattern patternForTag = Pattern.compile(regxpForTag);
Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib);
Matcher matcherForTag = patternForTag.matcher(htmlStr);
StringBuffer sb = new StringBuffer();
boolean result = matcherForTag.find();
while (result) {
StringBuffer sbreplace = new StringBuffer("<" + searchTag + " ");
// System.out.println("本來的matcherForTag:" + matcherForTag.group(1));
Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag.group(1)); .net
if (matcherForAttrib.find()) {
// System.out.println("本來的matcherForAttrib:" +
// matcherForAttrib.group(1));
matcherForAttrib.appendReplacement(sbreplace, searchAttrib + "=\"" + startStr + matcherForAttrib.group(1) + endStr);
}
matcherForAttrib.appendTail(sbreplace);
matcherForTag.appendReplacement(sb, sbreplace.toString() + ">");
result = matcherForTag.find();
}
matcherForTag.appendTail(sb);
return sb.toString();
} htm
/**
* @param htmlStr
* html文本
* @param searchTag
* 要修改的目標標籤
* @param searchAttrib
* 目標標籤中的屬性
* @param newStr
* 修改值 不保留本來
*/
public static String updateAllHtmlTag(String htmlStr, String searchTag, String searchAttrib, String startStr, String endStr) {
String regxpForTag = "<\\s*" + searchTag + "\\s+([^>]*)\\s*>";
String regxpForTagAttrib = searchAttrib + "\\s*=\\s*[\"|']([^\"|']+)[\"|']";// "=[\"|']http://([^[\"|']]+)[\"|']";
Pattern patternForTag = Pattern.compile(regxpForTag);
Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib);
Matcher matcherForTag = patternForTag.matcher(htmlStr);
StringBuffer sb = new StringBuffer();
boolean result = matcherForTag.find();
while (result) {
StringBuffer sbreplace = new StringBuffer("<" + searchTag + " ");
// System.out.println("本來的matcherForTag:" + matcherForTag.group(1));
Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag.group(1)); get
if (matcherForAttrib.find()) {
// System.out.println("本來的matcherForAttrib:" +
// matcherForAttrib.group(1));
matcherForAttrib.appendReplacement(sbreplace, searchAttrib + "=\"" + startStr + endStr);
}
matcherForAttrib.appendTail(sbreplace);
matcherForTag.appendReplacement(sb, sbreplace.toString() + ">");
result = matcherForTag.find();
}
matcherForTag.appendTail(sb);
return sb.toString();
} class
/**
* @param htmlStr
* html文本
* @param searchTag
* 要修改的目標標籤
* @param searchAttrib
* 目標標籤中的屬性
* @param newStr
* 修改值 不保留本來
*/
public static String changeHtmlTag(String htmlStr, String searchTag, String searchAttrib, String startStr, String endStr) {
String regxpForTag = "<\\s*" + searchTag + "\\s+([^>]*)\\s*>";
String regxpForTagAttrib = searchAttrib + "\\s*=\\s*[\"|']([^\"|']+)[\"|']";// "=[\"|']http://([^[\"|']]+)[\"|']";
Pattern patternForTag = Pattern.compile(regxpForTag);
Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib);
Matcher matcherForTag = patternForTag.matcher(htmlStr);
StringBuffer sb = new StringBuffer();
boolean result = matcherForTag.find();
while (result) {
StringBuffer sbreplace = new StringBuffer("<" + searchTag + " ");
// System.out.println("本來的matcherForTag:" + matcherForTag.group(1));
Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag.group(1)); import
if (matcherForAttrib.find()) {
// System.out.println("本來的matcherForAttrib:" +
// matcherForAttrib.group(1));
matcherForAttrib.appendReplacement(sbreplace, startStr + "=\"" + matcherForAttrib.group(1) + "\" " + searchAttrib + "=\"" + matcherForAttrib.group(1) + "\" ");
}
matcherForAttrib.appendTail(sbreplace);
matcherForTag.appendReplacement(sb, sbreplace.toString() + ">");
result = matcherForTag.find();
}
matcherForTag.appendTail(sb);
return sb.toString();
}
/**
* @param htmlStr
* html文本
* @param searchTag
* 要修改的目標標籤
* @param searchAttrib
* 目標標籤中的屬性
* @param newStr
* 修改值 不保留本來 判斷是否存在標籤 不存在 直接 新增進去
*/
public static String JudgeChangeHtmlTag(String htmlStr, String searchTag, String searchAttrib, String startStr, String endStr) {
String regxpForTag = "<\\s*" + searchTag + "\\s+([^>]*)\\s*>";
String regxpForTagAttrib = searchAttrib + "\\s*=\\s*[\"|']([^\"|']+)[\"|']";// "=[\"|']http://([^[\"|']]+)[\"|']";
Pattern patternForTag = Pattern.compile(regxpForTag);
Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib);
Matcher matcherForTag = patternForTag.matcher(htmlStr);
StringBuffer sb = new StringBuffer();
boolean result = matcherForTag.find();
while (result) {
StringBuffer sbreplace = new StringBuffer("<" + searchTag + " ");
// System.out.println("本來的matcherForTag:" + matcherForTag.group(1));
Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag.group(1));
if (matcherForAttrib.find()) { // System.out.println("本來的matcherForAttrib:" + // matcherForAttrib.group(1)); matcherForAttrib.appendReplacement(sbreplace, startStr + "=\"" + matcherForAttrib.group(1) + "\" " + searchAttrib + "=\"" + matcherForAttrib.group(1) + "\" "); } matcherForAttrib.appendTail(sbreplace); matcherForTag.appendReplacement(sb, sbreplace.toString() + ">"); result = matcherForTag.find(); } matcherForTag.appendTail(sb); return sb.toString(); } }