Вы можете использовать шаблон (?<!\d)\d{6}(?!\d)
, что означает «строковую позицию, которой не предшествует цифра; за ней следуют ровно шесть цифр; за ней следует строковая позиция, за которой не следует цифра». (Обозначение (?<!...)
, известное как отрицательное утверждение , означает «не предшествует ...
». Обозначение (?!...)
, известное как отрицательное утверждение 1008 *, означает «не сопровождается ...
». Обозначение \d
означает цифру. Обозначение {n}
означает « n раз», так что, например, \d{6}
означает «шесть цифр».)
Это может выглядеть так:
final String number;
{
final Matcher m = Pattern.compile("(?<!\\d)\\d{6}(?!\\d)").matcher(input);
if(m.find())
number = m.group(); // retrieve the matched substring
else
number = null; // no match found
}
Примечание: В предыдущей версии этого ответа предлагалось использовать границы слов, \b
; но один из ваших комментариев предполагает, что цифрам могут предшествовать или следовать за ними традиционные китайские символы, которые считаются символами слова (и, следовательно, не приводят к появлению границы слова), поэтому я изменил это.