繁体   English   中英

有条件的replaceAll java

[英]conditional replaceAll java

我有指向url的带有img src标签的html代码。 有些具有mysite.com/myimage.png,而另一些具有mysite.com/1234/12/12/myimage.png。 我想用缓存文件路径替换这些URL。 我正在寻找这样的东西。

String website = "mysite.com"    
String text = webContent.replaceAll(website+ "\\d{4}\\/\\d{2}\\/\\d{2}", String.valueOf(cacheDir));

但是,如果url末尾没有多余的日期戳,则此代码不起作用。 有谁知道我将如何实现这一目标? 谢谢!

试试这个

mysite\.com/(\d{4}/\d{2}/\d{2}/)?

在这里? 表示零次或多次发生


注意:请使用转义符\\. 用于点匹配,因为正则表达式中已使用.(dot)

样例代码:

String[] webContents = new String[] { "mysite.com/myimage.png",
        "mysite.com/1234/12/12/myimage.png" };

for (String webContent : webContents) {
    String text = webContent.replaceAll("mysite\\.com/(\\d{4}/\\d{2}/\\d{2}/)?",
            String.valueOf("mysite.com/abc/"));
    System.out.println(text);
}

输出:

mysite.com/abc/myimage.png
mysite.com/abc/myimage.png

在此处输入图片说明

您在website.com和前4位数字之间缺少正斜杠。

String text = webContent.replaceAll(Pattern.quote(website) + "/\\d{4}\\/\\d{2}\\/\\d{2}", String.valueOf(cacheDir));

我还建议您为您的website.com值( Pattern.quote部分)使用文字。

最后,您还错过了最后两位数字后的最后一个斜杠,因此不会被替换,但这可能是故意的...

尝试:

String text = webContent.replaceAll("(?<="+website+")(.*)(?=\\/)", 
                                    String.valueOf(cacheDir));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM