Предполагая, что количество цифр не всегда равно 7, я бы использовал регулярное выражение
" ([0-9]+) "
Внутренняя часть [0-9]+
находила одну или несколько цифр. Пробелы слева и справа от него гарантируют, что число будет найдено только в том случае, если оно окружено пробелами, поэтому дата и время в вашей строке ввода игнорируются. Скобки используются в сочетании с group(1)
, чтобы возвращать только число без пробелов вокруг него.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main
{
private static final Pattern regexp=Pattern.compile(" ([0-9]+) ");
public static void main(String[] args)
{
String s="This sentence was written on 2020-03-21 by person 1234567 at 07:23 hours";
Matcher matcher=regexp.matcher(s);
if (matcher.find())
{
String number=matcher.group(1);
System.out.printf("number=%s",number);
}
}
}
Чтобы найти только числа с 5-8 цифрами, вы можете написать " ([0-9]{5,8}) "
Как уже писали другие, \\d
может использоваться как альтернатива [0-9]
.