在String中找到一个6位数字

时间:2012-01-04 13:02:33

标签: java regex

我有来自短信的字符串,如:

“您的密码:123456。您的参考编号为012.总金额为E 1250,00 ..”

现在我需要提取代码'123456',它每次都不同,但总是6位数。

如何从字符串中提取这个6位数字?我能以某种方式使用正则表达式吗?我需要确定,所以我不想拆分'代码:',例如。

编辑: 文本的其余部分可以不同,但​​SMS中只有6位数字。

4 个答案:

答案 0 :(得分:19)

6位数的regexpr是

\d{6}

编辑: 代码看起来像

public static String extractDigits(final String in) {
   final Pattern p = Pattern.compile( "(\\d{6})" );
   final Matcher m = p.matcher( in );
   if ( m.find() ) {
     return m.group( 0 );
   }
   return "";
 }

答案 1 :(得分:6)

不确定Java的Regex是否支持外观。如果是的话:

(?<!\d)\d{6}(?!\d)

编辑:确实如此。 (谢谢波希米亚人)

答案 2 :(得分:2)

为什么不简单地使用substring()

String s = "Your code: 123456. Your reference number is 012. The total amount is E 1250,00..";
String s2 = s.substring(11);
String code = s2.substring(0, s2.indexOf("."));

或只是:

String code = s.substring(11, 17);

因为它总是6位数。

答案 3 :(得分:0)

   String text = "125432";
   String regex = "\\D*\\d{6}\\D*";

   Matcher m = Pattern.compile(regex).matcher(text);
   if(m.find())
      System.out.println(m.group(0).trim().substring(0,6));