有两个字符串:
        String s = "http://192.168.18.08/1.jpg   192.168.18.08/1.jpg";
        String p ="":
采用s.replaceAll(p,"function")方法~
要执行后得到这样的结果:
s="http://192.168.18.08/1.jpg   function";意思是:
设计一个正则表达式把一个字符串里所有的不是以http://开头的的字符子串替换

解决方案 »

  1.   

    直接用一個正則匹配有點困難,如果你的字符串都是以空格分開的話,你可以試試下面的方法:String s = "http://192.168.18.08/1.jpg 192.168.18.08/1.jpg";
    String[] a = s.split(" +");
    for(int i=0;i<a.length;i++){
    s = a[i];
    String regs = "(\\bhttp://).*";
    s = s.replaceAll(regs,"function");
    System.out.println(s);現在打印出的字符串就能把一个字符串里所有的不是以http://开头的的字符子串替换
      

  2.   

    如果是使用 java.util.regex 的话,这个问题是可以解决的。因为 java 的正则表达式支持 "反向预搜索",完整的代码如下:String s = "http://192.168.18.08/1.jpg   192.168.18.08/1.jpg";
    String p ="(?<=(\\s|^))(?!http://)[^\\s]+";
    System.out.println(s.replaceAll(p,"function"));关于 "反向预搜索" 的概念,推荐文章:
    http://www.regexlab.com/zh/regref.htm而 javascript, vbscript 中的正则表达式不支持 "反向预搜索"。
      

  3.   

    推荐楼上的兄弟们,去看一看那篇由浅入深的正则表达式文档:
    http://www.regexlab.com/zh/regref.htm另外,推荐大家关于一下国人开发的正则表达式:
    http://www.regexlab.com/deelx/
      

  4.   

    使用国人开发的正则表达式 http://www.regexlab.com/deelx/ 也可以解决搂主的问题:完整代码如下:char ptn[] = "(?<=(\\s|^))(?!http://)[^\\s]+";
    char txt[] = "http://192.168.18.08/1.jpg   192.168.18.08/1.jpg";CDeelxRegexp re( ptn );char * newtxt = re.Replace(txt, ptn, "function");printf("%s\n", newtxt);delete [] newtxt;
      

  5.   

    "反向预搜索"真的很好用,后来我又查了些相关的资料,"反向预搜索"帮了我不少忙。
    多谢你了兄弟    sswater(光杆兵)再次表示感谢。搂主要给sswater(光杆兵)加分啊!!!!