日期:2014-05-20  浏览次数:20661 次

为什么这段代码的输出只有xyz?
String str = "abc\nijk\nxyz\n";
Pattern p = Pattern.compile(".*\\n$");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}

------解决方案--------------------
改为Pattern p = Pattern.compile(".*\\n");

String str = "abc\nijk\nxyz\n";//这里的\n是换行了,表示
abc
ijk
xyz

.*\\n$当然只匹配最后一个了

------解决方案--------------------

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());
}
}
}

正则最后加个?也可以,先让字符吃掉匹配的