Java 正则表达式如何替换img标记中的src链接
我尝试了很多方法来做到这一点。我对正则表达式是完全陌生的。 我想替换所有的img src链接到其他链接 我的html文件如下所示:Java 正则表达式如何替换img标记中的src链接,java,regex,Java,Regex,我尝试了很多方法来做到这一点。我对正则表达式是完全陌生的。 我想替换所有的img src链接到其他链接 我的html文件如下所示: <img src="01"></img><img src="02"></img><img src="03"></img> < img src = "01"></img>< img src="02">< img src = "03"&g
<img src="01"></img><img src="02"></img><img src="03"></img>
< img src = "01"></img>< img src="02">< img src = "03"></img>
或者是这样的:
<img src="01"></img><img src="02"></img><img src="03"></img>
< img src = "01"></img>< img src="02">< img src = "03"></img>
![](“01”)
![](“02”)
可能有空格,也可能没有“
”
我希望他们是这样的:
<div><p><DIV class="a"><img src="01"></img></p></div><div><p><DIV class="a"><img src="02"></img></p></div><div><p><DIV class="a"><img src="03"></img></p></div>
我用这个来获取img src链接:
Pattern p = null;
Matcher m = null;
p = Pattern.compile("<img[^>]*src\\s*=\\s*\"([^\"]*)");
m = p.matcher(mystr);
while (m.find()) {
imgIDList.add(m.group(1));
}
模式p=null;
匹配器m=null;
p=模式。编译(“
我制作了str列表来替换:
ArrayList imgList4Replace=新的ArrayList()
我用这个来代替:
mystr.replace(("<img[^>]*src\\s*=\\s*\""+imgListReplaceOriginal.get(nIndex)+"([^\"]*)"), imgList4Replace.get(nIndex)+"$2");
mystr.replace(“
它就是不起作用。我花了太多时间来测试
需要你的帮助。
非常感谢。您不能可靠地将regexps与HTML/XML一起使用。您需要一个HTML解析器,例如名称混乱的(尽管它声称是一个HTML漂亮的打印机,但它也为您的文档提供了一个DOM视图)您不能可靠地将regexps与HTML/XML一起使用。您需要一个HTML解析器,例如名称混乱的(尽管它声称是一台HTML漂亮的打印机,但它也为您的文档提供了一个DOM视图)给您:
private static String replaceSrcs(String str, List<String> srcs) {
Pattern p = Pattern.compile("(<\\s*img\\s*src\\s*=\\s*\").*?(\"\\s*>)");
Matcher m = p.matcher(str);
StringBuffer sb = new StringBuffer();
int i = 0;
while (m.find()) {
m.appendReplacement(sb, "$1" + srcs.get(i++) + "$2");
}
m.appendTail(sb);
return sb.toString();
}
它会返回您喜欢的内容。给您:
private static String replaceSrcs(String str, List<String> srcs) {
Pattern p = Pattern.compile("(<\\s*img\\s*src\\s*=\\s*\").*?(\"\\s*>)");
Matcher m = p.matcher(str);
StringBuffer sb = new StringBuffer();
int i = 0;
while (m.find()) {
m.appendReplacement(sb, "$1" + srcs.get(i++) + "$2");
}
m.appendTail(sb);
return sb.toString();
}
它会返回您喜欢的内容。以下是代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ImgTest {
public static void main(String[] args) {
String s = "This is a sample<img src=\"test.html\" /> text";
Pattern p = Pattern.compile("[<](/)?img[^>]*[>]");
Matcher m = p.matcher(s);
if (m.find()) {
String src = m.group();
System.out.println(src);
}
s = s.replaceAll("[<](/)?img[^>]*[>]", "");
System.out.println(s);
}
}
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类ImgTest{
公共静态void main(字符串[]args){
String s=“这是一个示例文本”;
Pattern p=Pattern.compile(“[]*[>]”);
匹配器m=匹配器p;
if(m.find()){
字符串src=m.group();
系统输出打印LN(src);
}
s=s.replaceAll(“[]*[>]”,即“);
系统输出打印项次;
}
}
以下是代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ImgTest {
public static void main(String[] args) {
String s = "This is a sample<img src=\"test.html\" /> text";
Pattern p = Pattern.compile("[<](/)?img[^>]*[>]");
Matcher m = p.matcher(s);
if (m.find()) {
String src = m.group();
System.out.println(src);
}
s = s.replaceAll("[<](/)?img[^>]*[>]", "");
System.out.println(s);
}
}
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类ImgTest{
公共静态void main(字符串[]args){
String s=“这是一个示例文本”;
Pattern p=Pattern.compile(“[]*[>]”);
匹配器m=匹配器p;
if(m.find()){
字符串src=m.group();
系统输出打印LN(src);
}
s=s.replaceAll(“[]*[>]”,即“);
系统输出打印项次;
}
}
我只想制作字符串,字符串将被添加到html文件中。这是针对android webview的,所以…..我想我不能再清楚了。你不能可靠地将regexps与html/XML一起使用!他是对的-看看这篇史诗般的文章,想想看:;)-使用xml工具,你很好对不起,我想对我的问题有一些误解。忘了Html,我想用regexps用java更改字符串。我会尝试古巴的方法,并让你知道结果。谢谢,我检查了发送给我的链接pagid。我的错。对不起,我只想创建字符串,字符串将被添加到html文件中。这是针对android webview的,所以…..我想我不能再清楚了。你不能可靠地将regexps与html/XML一起使用!他是对的-看看这篇史诗般的文章,想想看:;)-使用xml工具,你很好对不起,我想对我的问题有一些误解。忘了Html,我想我想用正则表达式用java更改我的字符串。我会尝试古巴的方法,并让你知道结果。谢谢,我检查了发送给我的pagid链接。我的错误。对不起。方法不适用正则表达式。你应该使用or而不是作为旁注-图像不应该有结束标记。它们应该始终是自动结束的:
方法不应用正则表达式。您应该使用或而不是作为旁注-图像不应该有结束标记。它们应该始终是自动结束的:
嗨,古巴人,谢谢您的代码,我试过了,在我的情况下,似乎没有工作。我计划向我的老板报告,并改变我的方式。@AmyWuGo提到的案例通过这种方法成功测试。那么为什么不进行投票呢?嗨,古巴人,谢谢你的代码,我尝试过,但在我的案例中,它似乎不起作用。我计划向我的老板报告,并改变我的方式。@AmyWuGo提到的案例通过这种方法成功测试。为什么那就不要投票了。