[英]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.