我正在编写一个代码,该代码逐行读取文件并仅返回以下几行,例如:


  int int0 =(-953);
      int int1 =(-411);
      int int2 = 5471;
      int int3 = 823;


之后,我只想返回正数和负数。为此,我编写了以下内容:

String str = line.replaceAll("\\D+","");
System.out.println(str);


运行此代码的结果是:


  0953
      1411
      25471
      3823


我寻求的输出是:


  -953
      -411
      5471
      823


我怎样才能做到这一点?

最佳答案

如果要捕获一行中的最后一个数字序列(可以选择在前面加上减号),则可以使用捕获组来完成它,如下所示:

Pattern p = Pattern.compile(".*?(-?\\d+)\\D*$");
String line = "int int0 = (-953);";
Matcher m = p.matcher(line);
if (m.matches()) {
    System.out.println(m.group(1));
}


结果:

-953

10-05 23:56