2 Question: Groovy Code- Faire correspondre un champ en utilisant regex et générer une valeur vide si elle ne correspond pas

question créée à Wed, May 8, 2019 12:00 AM

J'ai un champ créé à partir de données analysées et reformatées. Si le résultat final ne correspond pas à un modèle spécifique, je souhaite le remplacer par une valeur vide. J'ai du code groovy écrit mais je continue à avoir des erreurs "Aucune propriété de ce genre" quand je l'exécute.

J'ai essayé de fouiller en ligne et de déplacer le code, mais avec mon expérience très limitée, je n'ai aucune chance.

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

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

Mes résultats attendus seraient de conserver les données ['FormattedNum'] si elles correspondent à la regex et si ce n'est pas le cas, remplacez simplement ce qui est dans ce champ en blanc.

    
0
2 réponses                              2                         

Que sont les données? Est-ce une carte? Supposons qu’il en soit ainsi et que cela n’entre pas dans le champ de la méthode ou peu importe où se trouve ce code ...

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

Vous pouvez faire ceci:

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

0600350991111101035062 correspond au sujet avec l'expression régulière comme expliqué dans le compte officiel Groovy doc . Il a la même sémantique que d'appeler ==~ sur une chaîne mais de façon groovy

    
0
2019-05-09 12: 37: 05Z
matches
source placée ici