条件替换全部java
我有一个带有指向URL的img src标记的html代码。有些人将mysite.com/myimage.png作为src,有些人将mysite.com/1234/12/12/myimage.png作为src。我想用缓存文件路径替换这些URL。我在找这样的东西条件替换全部java,java,regex,string,replaceall,Java,Regex,String,Replaceall,我有一个带有指向URL的img src标记的html代码。有些人将mysite.com/myimage.png作为src,有些人将mysite.com/1234/12/12/myimage.png作为src。我想用缓存文件路径替换这些URL。我在找这样的东西 String website = "mysite.com" String text = webContent.replaceAll(website+ "\\d{4}\\/\\d{2}\\/\\d{2}", String.valueO
String website = "mysite.com"
String text = webContent.replaceAll(website+ "\\d{4}\\/\\d{2}\\/\\d{2}", String.valueOf(cacheDir));
但是,当url末尾没有额外的日期戳时,此代码不起作用。有人知道我如何做到这一点吗?谢谢 在
website.com
和前4位之间缺少正斜杠
String text = webContent.replaceAll(Pattern.quote(website) + "/\\d{4}\\/\\d{2}\\/\\d{2}", String.valueOf(cacheDir));
我还建议您为website.com
值(模式.quote部分)使用文字
最后,您还缺少最后两位数字后的最后一个正斜杠,因此它不会被替换,但这可能是故意的…您缺少
website.com
和前4位数字之间的正斜杠
String text = webContent.replaceAll(Pattern.quote(website) + "/\\d{4}\\/\\d{2}\\/\\d{2}", String.valueOf(cacheDir));
我还建议您为website.com
值(模式.quote部分)使用文字
最后,您还缺少最后两位数字后的最后一个正斜杠,因此它不会被替换,但这可能是故意的…试试这个
mysite\.com/(\d{4}/\d{2}/\d{2}/)?
这里的?
表示零次或多次发生
注意:使用转义字符
\。
进行点匹配,因为(点)
已在正则表达式中使用
示例代码:
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
试试这个
mysite\.com/(\d{4}/\d{2}/\d{2}/)?
这里的?
表示零次或多次发生
注意:使用转义字符
\。
进行点匹配,因为(点)
已在正则表达式中使用
示例代码:
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
试试:
String text=webContent.replaceAll((?Try:
String text=webContent.replaceAll(“(?你说的“额外日期戳”是什么意思?它怎么不起作用?你能展示一些输入行为异常的例子吗?你想要类似于”(\\d{4}\\\\/\\d{2}\\/\\d{2})的东西吗?
你说的“额外日期戳”是什么意思?它是如何工作的?您能展示一些异常行为的输入示例吗?您想要类似于“(\\d{4}\\\/\\d{2}\\\/\\d{2})”的内容吗
您缺少结尾/
。OP需要此代码,但是当url结尾没有额外的日期戳时,此代码不起作用网站本身中的点
如何?您缺少结尾/
。OP需要此代码,但当url结尾没有额外的日期戳时,此代码不起作用关于dot
在website
中的内容是什么?谢谢Braj。非常有用的回答!谢谢Braj。非常有用的回答!