Поиск последнего числа в тексте

215
20 января 2018, 00:29

Есть строка:

random_ 123 _text 456 random_text_end

Подскажите пожалуйста каким будет регулярное выражение для поиска 456 в данной строке если не известно: будет ли random_ 123 _text и будет ли random_text_end? Главное условие что искомое число последнее в строке при этом как до, так и после может быть что угодно.

Спасибо.

Answer 1

Можно просто перебором найти последнее вхождение:

   //Основной метод приложения
    public static void main(String[] args) throws IOException {
        String text = "random_ 123 _text 456 random_text_end";
        Pattern pattern = Pattern.compile("(\\d+)");
        Matcher matcher = pattern.matcher(text);
        String result = null;
        while (matcher.find()){
            result = matcher.group(0);
        }
        //Тут обрабатываем результат
        String resultHandler = result; //result = "456"
    }
Answer 2

Цикл сработает, но можно решить и одним выражением: (\d+)[^\d]*$ (группа цифр, после которой до конца строки цифры не встречаются).

На Java будет выглядеть так:

String text = "random_ 123 _text 456 random_text_end";
Pattern pattern = Pattern.compile("(\\d+)[^\\d]*$");
Matcher matcher = pattern.matcher(text);
//если цифр в строке нет, то будет null.
String result = matcher.find() ? matcher.group(1) : null; 
READ ALSO
Обновить ViewModel / RecyclerViewAdapter LifeCycle

Обновить ViewModel / RecyclerViewAdapter LifeCycle

При инициализации viewModel использую кастомный Factory с передачей в конструктор аргумента

198
Servlet Exception без web.xml

Servlet Exception без web.xml

Есть свой ExeptionServlet, который отлавливает эксепшины и выводит необходимую мне информацию

215
Получить value текущего элемента

Получить value текущего элемента

Есть список товаров, и кнопки количества товаров у каждого товара

241
вывод объектов в textarea через запятую

вывод объектов в textarea через запятую

Всем доброго времени суток! Есть массив с объектами внутриМне нужно определенное значение объекта вынести в texarea через запятую с текстом...

241