有个字符串,如下.能否有正则表达式什么的,我有一个关键字,比如world,要把world这一行删除?
我现在想到的时,按\n split成数组,再遍历。但是不知有没有其他更好的方法?"
hello:aaaaaaa \n
world:bbbbbbb \n
ni:ccccccc    \n
hao:ddddddd   \n
"

解决方案 »

  1.   

    恩,因为你要删除行,正则也不好弄吧 还是按照你的方法,每行去匹配 world,包含world的就删掉
      

  2.   

    oh nooooooooooooooo
    难道我30分又要手白送了??????
      

  3.   

    按\n split成数组,再遍历。但是不知有没有其他更好的方法?
    为什么要split呀?
    String s = "hello:aaaaaaa \nworld:bbbbbbb \nni:ccccccc    \nhao:ddddddd\nworld:bbbbbbb \naaakkkk";
            s.replaceAll("world:[^\n]*\n", "");
    得到结果:
    hello:aaaaaaa 
    ni:ccccccc    
    hao:ddddddd
    aaakkkk不知道是不是你要的结果。
      

  4.   

    wow....
    cool,我上机试一下,对的话必须给分
      

  5.   

    Lz可以把这个结果写到数据库或者文件里做进一步操作import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class StringRex 
    {
    public static void main(String[] args) 
    {
    String str = "hello:aaaaaaa \n world:bbbbbbb \n ni:ccccccc    \n hao:ddddddd   \n";

    //第一位是a到z出现一次或多次,第二位是":",第三位是a-z出现一次或多次
    //\\s+代表空白字符,包括Tab建
    //\\\n  就等同于\n  前两个斜杠是转义字符
    String rex = "[a-z]+:[a-z]+\\s+\\\n";

    Pattern p = Pattern.compile(rex);

    Matcher m = p.matcher(str);

    while(m.find())
    {
    String name = m.group();

    if(name.contains("world"))
    {
    String delName = name;

    System.out.println("已删除的字符串:"+delName);
    continue;
    }

    System.out.println(name);
    }
    }
    }
      

  6.   

    怎么还没有结贴呀?String s = "hello:aaaaaaa \nworld:bbbbbbb \nni:ccccccc    \nhao:ddddddd\nworld:bbbbbbbb \naaakkkk";
            Matcher m = Pattern.compile("world:([^\n]*\n)").matcher(s);
            while (m.find()) {
                String delData = m.group();
            }
      

  7.   

    高手可否把这个正则解释一下?
     s.replaceAll("world:[^\n]*\n", "");