Libreoffice Calc REGEX как получить второе совпадение?

#libreoffice-calc

#libreoffice-calc

Вопрос:

Как получить второе совпадение РЕГУЛЯРНОГО выражения? Например:

A1: 11:33

=REGEX(A1;"d{2}") — получает 11, но я хочу 33!

Ответ №1:

Вы можете попытаться записать вторую пару цифр (ту, что после первой) и заменить все записанным значением.

 =REGEX(A1,"^.*?d{2}.*?(d{2}).*$","$1")
  

Редактировать:

Из вашего комментария к другому ответу кажется, что у вас нет строки, но время. В этом случае regex — неправильный инструмент. Просто используйте MINUTE() для извлечения минутной части времени:

 =MINUTE(A1)
  

Комментарии:

1. @FreeStyler: Какая у тебя версия? Я протестировал его с 6.4.4.2 (x64) в Windows, и там он отлично работает.

2. @FreeStyler: Также смотрите правку. У вас, вероятно, есть время, а не строка?

3. Спасибо! =HOUR(A1) 4 amp; ":" amp; MINUTE(A1) работает для меня! Также моя версия LOC 7.0.0.3 x64

4. @FreeStyler: Если вы просто хотите добавить 4 часа, вы можете использовать =A1 TIME(4,0,0) , это кажется проще.

Ответ №2:

Ответ зависит от диапазона возможных входных значений. Вам всегда нужны последние два числовых символа содержимого ячейки (абзаца)? Если да, то вы могли бы добавить $ , чтобы регулярное выражение соответствовало только содержимому в конце абзаца (см. Документацию):

=REGEX(A1;"d{2}$")

Смотрите следующий пример (A1= '11:33 ; A2 содержит формулу, показанную в A3 (с использованием функции FORMULA())).

введите описание изображения здесь