如果你读的时候是一行一行读那当然不行(除非自己加代码)
如果你是一次将所有信息读入一个 String 可以试试下面的方法:
str = str.replaceAll("\\s*<style>.*</style>\\s*", "");

解决方案 »

  1.   

    to registered:
    我用的是\\s*style\\s*.*?>((.|\\r|\\n)*?)<\\s*/\\s*style\\s*>((\\r|\\n)*?)
    但是不行,我是作为一个字符串来读取得。
    我的希望就是如果</style>后面有\n,则将其去掉,如果没有,则什么都不做。赫赫。
      

  2.   

    to 楼主:
    空格或者tab之类的算不算?to  wtjd(涛涛):
    regular expression 正则表达式,专门用来操作字符串的
    推荐google搜一下
    或者看sdk文档
    http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
      

  3.   

    有点理解楼主的意思了
    你这个问题想达到完美的效果用这个方法不容易,而且效率低
    一个语句无法解决
    你需要按行读,然后把每行想要消去的东西消去
    str = str.replaceAll("\\s*<\\s*style[^>]*>[^<]*<\\s*/\\s*style\\s*>\\s*", "\n");
    这个语句可以将
          <head>
             <style>dfdf</style>
          </head>
            <head>
               <style>dfdf</style>
            </head>
    换成
          <head>
    </head>
            <head>
    </head>
    但是无法换成
          <head>
          </head>
            <head>
            </head>
    还是那句话,想达到完美效果你需要按行读,一句话不行!