比如:String str1="abc<img src=\"http://a\b\c.jsp\"/>def\\ghi\\";
我用:str1=str1.replaceAll("\\","/");
这样会把所有的\都换成/的,而我是想只在<img>标签里把\替换成/,要怎么写呢?
我知道要用正则,但刚学不久也用得不熟,试了好久也没成功,向各位大虾们求助了,先谢啦!
上面求的结果应为:str1=abc<img src="http://a/b/c.jsp"/>def\ghi\
我用:str1=str1.replaceAll("\\","/");
这样会把所有的\都换成/的,而我是想只在<img>标签里把\替换成/,要怎么写呢?
我知道要用正则,但刚学不久也用得不熟,试了好久也没成功,向各位大虾们求助了,先谢啦!
上面求的结果应为:str1=abc<img src="http://a/b/c.jsp"/>def\ghi\
2、对拿出来的串做处理 str2 = str2.replaceAll("\\","/");
3、放回去 String str3 = str1.split("<")[0]+str2 + str1.split("<")[1].split(">")[1];
用str1=str1.replaceAll("\\","/"); 中的"\\"书写正则表达式来匹配,应该可以实现吧?可惜本人技术有限,写不对,望这方面的高手出现.......
public static void main(String[] args) {
String str="abc <img src=\"http://a\\\\b\\\\c.jsp\"/>def\\ghi\\";
String repStr = "";
Pattern pattern = Pattern.compile("(<img [^>]+>)",Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = pattern.matcher(str);
while(m.find()) {
repStr = m.group(1).replaceAll("\\\\\\\\", "/");
str = str.replace(m.group(1), repStr);
}
System.out.println(str);
}输出:
abc <img src="http://a/b/c.jsp"/>def\ghi\
public static void main(String[] args) {
String str="abc <img src=\"http://a\\\\b\\\\c.jsp\"/>def\\\\ghi\\\\";
String repStr = "";
Pattern pattern = Pattern.compile("(<img [^>]+>)",Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher m = pattern.matcher(str);
while(m.find()) {
repStr = m.group(1).replaceAll("\\\\\\\\", "/");
str = str.replace(m.group(1), repStr);
}
System.out.println(str);
}注意红色部分,因为这个"\"是正则中的符号,所以在测试时要转意,如果是直接从文件中读取就不用去理它了,