如何使用Java中的正则表达式解析字符串的最后6位数?

时间:2011-06-02 18:06:07

标签: java regex

我想知道如何解析Java字符串中的最后6位数字。所以:

String input1 = "b400" // the regex should return b400  
String input2 = "101010" // the regex should return 101010  
String input3 = "12345678" // the regex should return 345678  

2 个答案:

答案 0 :(得分:4)

不需要正则表达式。

input.substring(Math.max(0, input.length() - 6));

如果出于API原因必须是正则表达式,

Pattern.compile(".{0,6}\\Z", Pattern.DOTALL)

如果您需要匹配最后6个代码点(包括补充代码点),那么您可以将.替换为(?:[\\ud800-\\udbff][\\udc00-\\udfff]|.){0,6}

答案 1 :(得分:1)

我假设您的“input1”示例只需要“400”(不是“b400”)。这是一个解决方案,它将返回给定字符串的最后六位数字,如果字符串不以任何数字结尾,则返回null:

public String getLastSixDigits(String source) {
  Pattern p = Pattern.compile("(\\d{0,6})$");
  Matcher m = p.matcher(source);
  if (m.find()) {
    return m.group(1);
  } else {
    return null;
  }
}

像往常一样,将模式存储为成员以提高性能。