解决方案 »

  1.   

    Try this:
    public class Tee{
    public static void main(String[] args){
    String s = "aa    <bb cccc=''>eeee     www   <w oo='eee'>   <qqq  iii='xxx' >  ssss d</a>aaa oooo";
    String regex = " (?=[\\w \\=']*<.*>|[\\w ]*$)";
    System.out.println(s.replaceAll(regex, "-"));
    }
    }
      

  2.   


    String regex = " (?=[\\w \\=']*<.*>|[\\w ]*$)"; 
    [\\w \\=']*<.*>:该空格后面有零到多个非'<'和'>'的字符,然后必须紧跟着一对<>及里面的内容。这样写就可以排除掉<>里面的空格。因为<>里面的空格后面一定会先出现一个'>'.
    [\\w ]*$:该空格后面没有<>作为判断条件了,但是能匹配到行尾,说明也是在<>外面的。
    [\\w \\=']*<.*>|[\\w ]*$:两者满足其中一个条件即可。
     (?=[\\w \\=']*<.*>|[\\w ]*$):正方向零宽匹配。可参考: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html