2017-02-22 4 views
1

У меня есть таблица LibreOffice Calc и вам нужно извлечь небольшую строку из ячейки в каждой строке. Ячейки содержат около абзаца текста и выглядят похожими на нижеследующие, но все с разными словами, длинами и т. Д. Одна общая вещь - это фактически текст текста, который мне нужно извлечь, в данном случае 17/11/2016 09:00, но может быть любой датой/отформатированное в формате 24h.Извлечение определенной строки из ячейки электронной таблицы

Lorem Ipsum - просто фиктивный текст печати и набора текста промышленности. Lorem Ipsum был 17/11/2016 09:00 промышленным стандартным фиктивным текстом с 1500-х годов, когда неизвестный принтер взял камбуз типа и скремблировал его, чтобы сделать типовой экземпляр книги.

Я искал следующий сайт, но не могу объединить его, чтобы работать, чтобы даже соответствовать, не говоря уже об извлечении фактической строки.

http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5

Может кто-то мне точку в правильном направлении, пожалуйста?

+0

Мне удалось получить регулярное выражение для работы: = COUNTIF (A1: A6, "^ (? = \ D) (? :(?: 31 (? !, (?: 0? [2469] | 11)) | (: 30 | 29) (0 2) | 29 (= 0 2 (:(:(?: 1 [6-9] | [2-9] \ d?!.?.?.?) (0 ?: [48] |? [2468] [048] | [13579] [26]) | (:(?: 16 |? [2468] [048] | [3579] [26]) 00))) (: \ x20 | $)) | (?:? [. - /] 2 [0-8] | | 1 \ d 0 [1-9]))() (?: 1 [012] | 0 ? [1-9]) \ 1 (: 1 [6-9] | [2-9] \ d) \ d \ d (?: (= \ x20 \ d??) \ x20 | $))? ? (((0 [1-9] | 1 [012]) (: [0-5] \ г) {0,2} (\ х20 [П.] М)) | ([01] \ д | 2 [ 0-3]) (: [0-5] \ d) {1,2})? $ "), Но он работает только в том случае, если содержимое ячейки является точным совпадением, и я не знаю, как извлечь совпадающая строка –

ответ

1

формула:

=MID(A1,SEARCH("[:digit:]{2}/[:digit:]{2}/[:digit:]{4} [:digit:]{2}:[:digit:]{2}",A1,1),16) 

Результат:

17/11/2016 09:00 

Объяснение:

  • MID грейферы часть текста.
  • A1 - это ячейка, содержащая текст.
  • SEARCH получает местоположение текста для захвата.
  • [:digit:]{2} ищет две цифры. Синтаксис: https://help.libreoffice.org/Common/List_of_Regular_Expressions.
  • / Ищет буквальную косую черту, как и пространство () и двоеточие :.
  • 1 начинает смотреть в начале.
  • 16 - длина текста для захвата.

Для этого убедитесь, что регулярные выражения включены в Инструменты -> Параметры -> LibreOffice Calc -> Calculate ->Enable regular expressions in formulas.

0

Альтернативный, но подобный подход, который не требует формул и возвращает/индекс времени даты, а не текст Найти и Заменить (Edit меню), используя для Find:

(.*)([0-9]{2}/[0-9]{2}/[0-9]{4} [0-9]{2}:[0-9]{2})(.*) 

и проверку Regular expressions под Other options ,

Есть три (группы): все, что до того, что мы хотим, что мы хотим и что-нибудь после того, что мы хотим, и замена является только второй группы захвата, так что для Replace с помощью:

$2 

Пэтер для сопоставления - {2} любого числового символа ([0-9]), затем /, еще два числа и косую черту, четыре цифры, пробел, еще два числа, : и два числа.

Если данные находятся в столбце A, то Find/Replace может находиться на копии в столбце B, чтобы сохранить исходные данные.

Смежные вопросы