java

Java – Remplazar cadenas con expresión regular

En este artículo sobre Java vamos a ver cómo Remplazar cadenas con expresión regular, es decir, usar una expresión regular para buscar y reemplazar por otra String.

El método que vamos a usar será replaceAll ya que nos permite el uso de expresiones regulares, a diferencia del método replace en Java.

Vamos a practicar un poco de expresiones regulares aplicadas a la sustitución de cadenas.

Sintaxis de la función

La función replaceAll, al igual que el método replace, devuelve una cadena con el texto remplazado. Su sintaxis es:

cadena.replaceAll(expresión regular, remplazo);

Lo importante aquí es que la expresión regular debe estar definida correctamente y escapar los elementos con una doble barra. Por ejemplo, para escapar el punto (.), en lugar de hacer un \. se hace un \\. ya que se necesita doble barra invertida.

Ejemplo Java – Remplazar cadenas con expresión regular

En este código vamos a remplazar los caracteres .,() por nada, es decir, removerlos.

String cadena = "Hola, mundo. Veamos si funciona (probando con esto)";
String cadenaRemplazada = cadena.replaceAll("[\\.\\,\\(\\)]", "");
System.out.printf("Antes:%s\nDespués:%s\n", cadena, cadenaRemplazada);
/*
Salida:
Antes:Hola, mundo. Veamos si funciona (probando con esto)
Después:Hola mundo Veamos si funciona probando con esto
*/

La salida es la que se observa en los comentarios, por lo cual el programa cumple con lo que dijimos.

Vamos a dividirlo. Primero tenemos a la expresión regular que se ve así: [\\.\\,\\(\\)]

Pero no hay que asustarse, originalmente es: [\.\,\(\)], lo que quiere decir que tome cualquier carácter literal que se encuentre entre los corchetes.

Lo que pasa es que en Java debemos escapar con doble barra invertida. De este modo puedes usar cualquier expresión regular válida.

Extraer texto con expresión regular

Veamos otro ejemplo sencillo para terminar con este tutorial; vamos a remplazar el contenido que esté entre dos etiquetas HTML. No es necesario conocer el lenguaje, lo que haremos será:

Remplazar lo que haya entre etiquetas <strong> por <u>. Así que necesitamos extraer lo que está dentro de <strong>contenido aquí</strong> y convertirlo en <u>contenido aquí</u>.

La expresión regular queda así: <strong>([\ \w\d]+)<\/strong>

cadena = "Esto es un poco de código que entienden los <strong>navegadores web como chrome 80</strong>, es para enfatizar <strong>texto</strong>";
cadenaRemplazada = cadena.replaceAll("<strong>([\\ \\w\\d]+)<\\/strong>", "<u>$1</u>");
System.out.printf("Antes:%s\nDespués:%s\n", cadena, cadenaRemplazada);

Indica que dentro de las etiquetas debe haber uno o más espacios, letras o dígitos. Los paréntesis indican que vamos a capturar eso en un grupo, para después acceder a ello con la variable $1, si hubiera más grupos accederíamos a $2 y así sucesivamente.

Poniendo todo junto

El código completo queda así:


/*
 * Archivo: RemplazarCadenasExpresiónRegular.java
 * Clase: RemplazarCadenasExpresiónRegular
 * Autor: parzibyte
 * Fecha: 1/14/20 4:53 PM
 * Visita https://parzibyte.me/blog para más tutoriales sobre Java
 */
public class Main {
    public static void main(String[] args) {
        String cadena = "Hola, mundo. Veamos si funciona (probando con esto)";
        String cadenaRemplazada = cadena.replaceAll("[\\.\\,\\(\\)]", "");
        System.out.printf("Antes:%s\nDespués:%s\n", cadena, cadenaRemplazada);

        cadena = "Esto es un poco de código que entienden los <strong>navegadores web como chrome 80</strong>, es para enfatizar <strong>texto</strong>";
        cadenaRemplazada = cadena.replaceAll("<strong>([\\ \\w\\d]+)<\\/strong>", "<u>$1</u>");
        System.out.printf("Antes:%s\nDespués:%s\n", cadena, cadenaRemplazada);
    }
}

Al ejecutarlo se ve como en la imagen:

Java – Remplazar cadenas con expresión regular

Por otro lado, te invito a aprender más sobre Java.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

2 días hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

1 semana hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

1 semana hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

1 semana hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

1 semana hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

1 semana hace

Esta web usa cookies.