Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式如何替换img标记中的src链接_Java_Regex - Fatal编程技术网

Java 正则表达式如何替换img标记中的src链接

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链接到其他链接

我的html文件如下所示:

<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>

可能有空格,也可能没有“

我希望他们是这样的:

<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提到的案例通过这种方法成功测试。为什么那就不要投票了。