2 Pregunta: Código Groovy: hacer coincidir un campo usando expresiones regulares y generar un valor en blanco si no es una coincidencia

pregunta creada en Wed, May 8, 2019 12:00 AM

Tengo un campo que se creó en base a algunos datos analizados y reformateados. Si el resultado final no coincide con un patrón específico, quiero reemplazarlo con un valor en blanco. Tengo un código maravilloso escrito pero continúo obteniendo errores de "No existe esa propiedad" cuando lo ejecuto.

He intentado hurgando en línea y moviendo el código, pero con mi experiencia muy limitada no tengo suerte.

def formattedData=data['FormattedNum']
def regExpStr=[A-Z]{5}[':'][0-9]{4}

if (formattedData.matches(regExpStr)){
    formattedData
} else {
    formattedData =''
}  ; 

Mis resultados esperados serían conservar los datos ['FormattedNum'] si coinciden con la expresión regular y, si no coinciden, simplemente reemplaza lo que haya en ese campo como un espacio en blanco.

    
0
2 Respuestas                              2                         

¿Qué son los datos? ¿Es un mapa? Supongamos que está y está fuera del alcance del método o de donde se encuentre este código ...

def data = [FormattedNum: 'ABCDE:0123']
def formattedData= data['FormattedNum']
def regExpStr = /[A-Z]{5}[':'][0-9]{4}/
if (formattedData.matches(regExpStr)){     
    formattedData 
} 
else { 
    formattedData = '' 
}
    
0
2019-05-09 12: 25: 34Z

Puedes hacer esto:

def formattedData = data['FormattedNum']
if (!(formattedData ==~ '[A-Z]{5}:[0-9]{4}')) {
   formattedData = ''
}

==~ hace coincidir el sujeto con la expresión regular tal como se explica en el Groovy oficial doc . Tiene la misma semántica que llamar a matches en una cadena pero de una manera genial

    
0
2019-05-09 12: 37: 05Z
fuente colocada aquí