现有一个字符串: "aaa$demo.png$bbbbb$item.jpg$ccc$value.bmp$ddwasdfadsf"怎么才能通过正则表达式把以$符开头并以$符结尾的文件名替换成指定的字符串?
比如'图片',上面原始串经过替换变成"aaa图片bbbbb图片ccc图片ddwasdfadsf"谢谢

解决方案 »

  1.   


    String s = "aaa$demo.png$bbbbb$item.jpg$ccc$value.bmp$ddwasdfadsf";
    System.out.println(s.replaceAll("\\$", "图片"));
      

  2.   


    没看清lz说啥吧哥们...
    String s = "aaa$demo.png$bbbbb$item.jpg$ccc$value.bmp$ddwasdfadsf";
    System.out.println(s.replaceAll("\\$[^\\$]+\\$", "你好"));
    这样吧
      

  3.   


    System.out.println(s.replaceAll("(?i)(\\$\\w++\\.(?:(?:png)|(?:jpg)|(?:bmp)|(?:jpeg)|(?:gif))\\$)", "图片"));
    System.out.println(s.replaceAll("(?i)(\\$\\w++\\.((png)|(jpg)|(bmp)|(jpeg)|(gif))\\$)", "图片"));
      

  4.   

    1楼的写法是有问题的。以下贴出我写的代码,但$不能去掉。等待楼下高手的解答
    public static void main(String []args){
    String str = "aaa$demo.png$bbbbb$item.jpg$ccc$value.bmp$ddwasdfadsf";
    String newString = str.replaceAll("(?<=\\$)[a-zA-z\\.]+(?=\\$)", "图片");
    System.out.println(newString);
    }
      

  5.   


    String s = "aaa$demo.png$bbbbb$item.jpg$ccc$value.bmp$ddwasdfadsf";
    System.out.println(s.replaceAll("\\$[^\\$]+\\.[^\\$]+\\$", "你好"));
    这样应该好一些,意思是:
    将[以$开头,不包含$号数目1个以上,一个.,不包含$号数目1个以上,以$结尾]替换为“你好”