String str="<input value='test' >abcd  efg hi</input >";
希望找出abcd与efg和efg和hi之间的空格,如何写正则表达式?

解决方案 »

  1.   

    不在"<>" 或 "</>"之内的所有空格,其实就是找出不在"<>"的所有空格吧
      

  2.   

    要是我,就用json转2次,生成不带格式的
    关于XML的,可以参考下这个:
    http://www.csharpwin.com/dotnetspace/8689r8636.shtml
      

  3.   

    那不在"<>"之内的又咋写了?
      

  4.   

    Java中做不到太严谨,不过一般来说也够了找出来做什么,替换吧?String str="<input value='test' >abcd efg hi</input >";
    String result = str.replaceAll(" +(?=[^<>]*(?:<|$))", "");
    System.out.println(result);
      

  5.   

    做不到太严谨是啥意思哟?上面的正则表达式有小小的bug?
      

  6.   

    只能加正向搜索条件,不能包含在“...>”中
    (?=[^<>]*(?:<|$))
    至于逆向搜索条件,因为需要用到不定量词,Java中不支持
    (?<=(?:^|>)[^<>]*)如果源字符串比较规范,<>都是配对出现的话,那是没什么问题的,如果不是太规范的话,其实加上逆向搜索也不是很严谨的
    不过话说回来,写正则,适用就好,倒不用一味的追求严谨了
      

  7.   

    只能加正向搜索条件,不能包含在“...>”中
    (?=[^<>]*(?:<|$))
    至于逆向搜索条件,因为需要用到不定量词,Java中不支持
    (?<=(?:^|>)[^<>]*)如果源字符串比较规范,<>都是配对出现的话,那是没什么问题的,如果不是太规范的话,其实加上逆向搜索也不是很严谨的
    不过话说回来,写正则,适用就好,倒不用一味的追求严谨了
      

  8.   


    5楼不满足你需求?Java中正则很难做到更严谨了,除非改成其它方式,比如自己写状态机
      

  9.   

    这其实是找  >和<中的空格,  >和<中间不许出现<所以   大体是:    >([\s]*?)<
      

  10.   


    说得很好
    我觉得楼主是要做页面压缩吧?开发wap1.2或者wap2.0做手机浏览吗?
    我觉得是把网页源文件中的回车换行,tab,换页什么的都替换成一个空格?网上似乎有这样过滤包吧?String result = str.replaceAll(" +(?=[^<>]*(?:<|$))", "");
    我觉得这样或许好一些
    String result = str.replaceAll("(?ims)(?<=[>])\\s+(?=[^<>]*(?:<|$))", " ");