String str = "abc\nijk\nxyz\n";
Pattern p = Pattern.compile(".*\\n$");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}

解决方案 »

  1.   

    改为Pattern p = Pattern.compile(".*\\n");String str = "abc\nijk\nxyz\n";//这里的\n是换行了,表示
    abc
    ijk
    xyz.*\\n$当然只匹配最后一个了
      

  2.   


    import java.util.regex.*;public class Test02 {
    public static void main(String[] args){
    String str = "abc\nijk\nxyz\n";
    Pattern p = Pattern.compile(".*\\n");
    Matcher m = p.matcher(str);
    while (m.find()) {
    System.out.println(m.group());
    }
    }
    }输出:abcijkxyz
    由于你的代码里的正则有$,$是整个字符串结尾的意思。
      

  3.   


    import java.util.regex.*;public class Test02 {
    public static void main(String[] args){
    String str = "abc\nijk\nxyz\n";
    Pattern p = Pattern.compile(".*\\n$?");
    Matcher m = p.matcher(str);
    while (m.find()) {
    System.out.println(m.group());
    }
    }
    }正则最后加个?也可以,先让字符吃掉匹配的