Saltar la navegación

Uso de expresiones regulares en los filtros

El filtro estándar que integra Calc es un filtro elaborado y potente. Pero se le puede sacar más partido utilizando expresiones regulares.

Supongamos que disponemos de una hoja de cálculo de Calc como la que se muestra a continuación y que podemos descargar en nuestro ordenador haciendo clic aquí: Expresiones-regulares-en-filtro-estandar.ods

En esta hoja de cálculo disponemos de la denominación oficial de las poblaciones de la provincia de Valencia en la columna C y del dato de su población en el año 2015 en la columna D

Expresiones regulares en filtros - hoja de cálculo para el ejercicioExpresiones regulares en filtros - hoja de cálculo para el ejercicio

Supongamos que necesitamos establecer ciertos filtros para poder mostrar los datos de algunas poblaciones en función de su nombre, como por ejemplo, aquellas poblaciones que comienzan por Beni, las que terminan por Ell, las que terminan bien por AL, EL, IL, OL, UL, ...

Podemos conseguirlo utilizando el filtro estándar con expresiones regulares.

La mayoría de los usuarios no saben como funcionan las expresiones regulares. Así que vamos a estudiar unos ejemplos que nos pueden ayudar a comprender su funcionamiento y uso.

Paso 1: Activar el filtro predeterminado

Hagamos clic en cualquier celda dentro de la lista de poblaciones, preferiblemente en la columna D, y activemos la opción Filtro estándar desde el menú Datos / Más filtros / Filtro estándar....

Calc presentará un diálogo como el mostrado a continuación:

Diálogo Filtro estándarDiálogo Filtro estándar

Haremos clic en el botón Opciones (Alt + C) para poder activar las opciones Expresiones regulares (Alt + E), y, si procede, El intervalo contiene etiquetas de columnas (Alt + O).

Diálogo Filtro estándar con las opciones necesarias activadas
Diálogo Filtro estándar con las opciones necesarias activadas

Paso 2: Aplicar los filtros

Ejemplo 1: Poblaciones cuyo nombre comienza por "Beni"

Deseamos filtrar aquellas poblaciones que comienzan por "Beni". Para ello completaremos en el diálogo la primera línea de criterios de filtrado:

  • Seleccionamos en Nombre de campo Denominación oficial
  • Seleccionamos en condición la opción =
  • En valor escribimos Beni.*
Diálogo filtro estándar con la primera línea de criterios completada
Diálogo Filtro estándar con la primera línea de criterios completada 

Tras hacer clic en el botón Aceptar, la tabla quedará filtrada por la condición indicada, como se muestra a continuación:

Resultado tras aplicar el primer filtro con expresiones regulares
Resultado tras aplicar el primer filtro con expresiones regulares

La expresión regular .* significa ninguno o cualquier número de carácteres alfanuméricos en esa posición. Al situarlo tras el texto Beni se comporta como aquellas poblaciones que comienzan por Beni.

Ejemplo 2: Poblaciones cuyo nombre termina por "ell"

Deseamos filtrar aquellas poblaciones que terminan por "ell". Para ello completaremos en el diálogo la primera línea de criterios de filtrado:

  • Seleccionamos en Nombre de campo Denominación oficial
  • Seleccionamos en condición la opción =
  • En valor escribimos .*ell
Diálogo filtro estándar con la primera línea de criterios completada
Diálogo filtro estándar con la primera línea de criterios completada

El resultado es el mostrado a continuación:

Resultado tras aplicar el nuevo filtro con expresiones regulares
Resultado tras aplicar el nuevo filtro con expresiones regulares

La expresión regular .* significa ninguno o cualquier número de caracteres alfanuméricos en esa posición. Al situarlo antecediendo al texto ell se comporta como aquellas poblaciones que terminan por ell.

Veamos más ejemplos:

  • Poblaciones cuyo nombre comienza por "Beni"
    • En Condición seleccionamos: =
    • En Valor escribimos: Beni.*
    • La expresión regular que hemos utilizado es: .*
    • Equivale a la expresión usando comodines: Beni*
  • Poblaciones cuyo nombre termina por "ell"
    • En Condición seleccionamos: =
    • En Valor escribimos: .*ell$
    • La expresión regular que hemos utilizado es: .* $
    • Equivale a la expresión usando comodines: *ell
  • Poblaciones cuyo nombre contiene "ssa"
    • En Condición seleccionamos: =
    • En Valor escribimos: .*ssa.*
    • La expresión regular que hemos utilizado es: .*
    • Equivale a la expresión usando comodines: *ssa*
  • Poblaciones cuyo nombre NO comienza por "Beni"
    • En Condición seleccionamos: <>
    • En Valor escribimos: Beni.*
    • La expresión regular que hemos utilizado es: .*
    • Equivale a la expresión usando comodines: Beni*
  • Poblaciones cuyo nombre NO termina por "ell"
    • En Condición seleccionamos: <>
    • En Valor escribimos: .*ell$
    • La expresión regular que hemos utilizado es: .* $
    • Equivale a la expresión usando comodines: *ell
  • Poblaciones cuyo nombre NO contiene "ssa"
    • En Condición seleccionamos: <>
    • En Valor escribimos: .*ssa.*
    • La expresión regular que hemos utilizado es: .*
    • Equivale a la expresión usando comodines: *ssa*


Ejemplo 3: Poblaciones cuyo nombre comienza por "Beni", contienen cualquier otra letra a continuación, y la siguiente letra es una "a":

Para ello completamos en el diálogo la primera línea de criterios de filtrado:

  • Seleccionamos en Nombre de campo Denominación oficial
  • Seleccionamos en condición la opción =
  • En valor escribimos Beni.a.*
Diálogo filtro estándar con las nuevas condiciones de filtro
Diálogo Filtro estándar con las nuevas condiciones de filtro

Ejemplo 4: Poblaciones cuyo nombre termina por "al", "el", "il", "ol" o "ul":

Para ello completamos en el diálogo la primera línea de criterios de filtrado:

  • Seleccionamos en Nombre de campo Denominación oficial
  • Seleccionamos en condición la opción =
  • En valor escribimos .*[aeiou]l$
Diálogo Filtro estándar con las nuevas condiciones de filtro
Diálogo Filtro estándar con las nuevas condiciones de filtro

[aeiou] significa que en esa posición contenga una de las letras indicadas.

Más ejemplos:

  • Poblaciones cuyo nombre comienza por B, P o R:
    • En Condición seleccionamos: =
    • En Valor escribimos: [BPR].*
    • La expresión regular que hemos utilizado es: [ ] y .*
  • Poblaciones cuyo nombre comienza por una letra de la A a la C:
    • En Condición seleccionamos: =
    • En Valor escribimos: [A-C].*
    • La expresión regular que hemos utilizado es: [ - ] y .*
  • Poblaciones cuyo nombre contiene algún número:
    • En Condición seleccionamos: =
    • En Valor escribimos: .*[1-9].*
    • La expresión regular que hemos utilizado es: [ - ] y .*
  • Poblaciones cuyo nombre comienza por C y contiene una A o una E en segundo lugar:
    • En Condición seleccionamos: =
    • En Valor escribimos: C[ae].*
    • La expresión regular que hemos utilizado es: [ ] y .*
  • Poblaciones cuyo nombre comienza por C pero la segunda letra no es ni a ni e:
    • En Condición seleccionamos: <>
    • En Valor escribimos: C[^ae].*
    • La expresión regular que hemos utilizado es: [^ ] y .*
  • Poblaciones cuyo nombre comienza por C pero la segunda letra no es una letra en el rango a-f:
    • En Condición seleccionamos: <>
    • En Valor escribimos: C[^a-f].*
    • La expresión regular que hemos utilizado es: [^ - ] y .*

 

Expresiones regulares versus comodines

Si utilizamos carácteres comodines en otras aplicaciones, esta lista puede servirnos como guía de equivalencia entre los dos sistemas:

  • Ningún o cualquier número de carácteres
    • Expresión con comodines: *
    • Expresión regular equivalente: .*
    • Y si es ... termina por: Añadimos $ al final
  • Un carácter en esa posición
    • Expresión con comodines: ?
    • Expresión regular equivalente: .
    • Y si es ... termina por: Añadimos $ al final
  • Alguno de los carácteres
    • Expresión con comodines: [  ]
    • Expresión regular equivalente: [  ]
    • Y si es ... termina por: Añadimos $ al final
  • Rango de carácteres
    • Expresión con comodines: [  -  ]
    • Expresión regular equivalente: [  -  ]
    • Y si es ... termina por: Añadimos $ al final
  • No contiene alguno de los carácteres
    • Expresión con comodines: [!  ]
    • Expresión regular equivalente: [^  ]
    • Y si es ... termina por: Añadimos $ al final
  • No contiene alguno de los caracteres del rango
    • Expresión con comodines: [! - ]
    • Expresión regular equivalente: [^ - ]
    • Y si es ... termina por: Añadimos $ al final