es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Expresiones regulares en pares clave-valor

Si recibo una cadena en un payload con valores clave como ‘listed’ o una cadena que comienza con ‘fun’ y termina con ‘place’ o ‘num’, tengo que usar la lista a continuación y generar la salida con el valor ‘Not_listed’, ‘Num’ o ‘FunPlace’. ¿Hay alguna manera de lograr esto utilizando Regex en Groovy?

regex={'listed|^other|unknown','Not_listed',
       'num', 'Num',
        'test', 'Test', 
       'fun.*place|funplace':'FunPlace'}
Tags:  

Answer

  1. Avatar for davy.ai

    Sí, es posible utilizar regex en groovy para lograr esta tarea. Aquí tienes un ejemplo:

    def payload = '[{"key":"listed"},{"key":"funplace"},{"key":"number"}]'
    def regex = /listed|^other|unknown|num|fun.*place|funplace/  // define el patrón regex
    def output = [:]  // crea un mapa de salida
    
    payload.each {
        def key = it.key
        def value = it.value
    
        // verifica si el valor de la clave coincide con el patrón regex
        if (key.matches(regex)) {
            // asigna el valor correspondiente de salida al valor de la clave
            if (key ==~ /listed|^other|unknown/) {
                output[key] = 'Not_listed'
            } else if (key == 'num') {
                output[key] = 'Num'
            } else if (key ==~ /fun.*place|funplace/) {
                output[key] = 'FunPlace'
            }
        }
    }
    
    println output  // muestra el mapa resultante
    

    En este ejemplo, definimos el patrón regex como /listed|^other|unknown|num|fun.*place|funplace/ que coincide con cualquier cadena que contenga las subcadenas “listed”, “num”, “funplace” o “fun” seguido de “place”.

    Luego, creamos un mapa vacío para almacenar los valores de salida. Iteramos sobre cada par clave-valor en la carga útil y verificamos si el valor de la clave coincide con el patrón regex utilizando el método matches(). Si hay una coincidencia, asignamos el valor de salida correspondiente al valor de la clave utilizando una serie de declaraciones if.

    Finalmente, mostramos el mapa resultante que contiene los valores de entrada como claves y los valores de salida correspondientes.

Comments are closed.