Tengo una hoja de cálculo de LibreOffice Calc y necesito extraer una pequeña cadena de una celda en cada fila. Las celdas contienen aproximadamente un párrafo de texto y se parecen al siguiente, pero todas con diferentes palabras, longitudes, etc. La única cosa común es el formato del texto que necesito extraer, en este caso 17/11/2016 09:00 pero podría ser cualquier fecha / hora formateada así en formato 24h.

Lorem Ipsum es simplemente un texto ficticio de la impresión y composición tipográfica. industria. Lorem Ipsum ha sido la industria 17/11/2016 09:00 de la industria texto ficticio estándar desde 1500, cuando una impresora desconocida tomó una galera de tipo y la revolvió para hacer un libro de muestras tipo.

He buscado en el siguiente sitio, pero no puedo unirlo para trabajar para igualar y mucho menos extraer la cadena real.

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

¿Podría alguien señalarme en la dirección correcta, por favor?

1
Johnny John Boy 22 feb. 2017 a las 23:53

2 respuestas

La mejor respuesta

La formula:

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

El resultado:

17/11/2016 09:00

La explicación:

  • MID toma parte del texto.
  • A1 es la celda que contiene el texto.
  • SEARCH obtiene la ubicación del texto para capturar.
  • [:digit:]{2} busca dos dígitos. La sintaxis está en https://help.libreoffice.org/Common/List_of_Regular_Expressions.
  • / busca una barra diagonal, al igual que el espacio () and a colon :.
  • 1 comienza a mirar al principio.
  • 16 es la longitud del texto a agarrar.

Para que esto funcione, asegúrese de que las expresiones regulares estén habilitadas en Herramientas -> Opciones -> LibreOffice Calc -> Calcular -> Enable regular expressions in formulas.

2
Jim K 22 feb. 2017 a las 21:37

Un enfoque alternativo pero similar que no requiere una fórmula y devuelve un índice de fecha / hora en lugar de texto es Buscar y reemplazar (menú Editar) con Buscar:

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

Y marcando Regular expressions en Other options.

Hay tres (grupos): cualquier cosa antes de lo que queremos, lo que queremos y cualquier cosa después de lo que queremos y el reemplazo es solo del segundo grupo de captura, así que para Reemplazar usando:

$2 

El patrón que debe coincidir es {2} de cualquier carácter numérico ([0-9]) seguido de /, otros dos números y barra diagonal, cuatro números, espacio, otros dos números, : y dos números.

Si los datos están en la Columna A, Buscar / Reemplazar puede estar en una copia en la Columna, para preservar los datos de origen.

0
pnuts 8 jun. 2017 a las 00:43