Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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_Java_Regex_String_Replaceall - Fatal编程技术网

条件替换全部java

条件替换全部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

我有一个带有指向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.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。非常有用的回答!