J'ai une chaîne contenant plusieurs paramètres, par ex. Pour la sortie de journal, je veux "cacher" certaines valeurs du paramètre, c'est-à-dire les remplacer par ***.Correspondance des valeurs de paramètre dans une chaîne à l'aide de regex
J'utilise l'expression rationnelle suivante pour correspondre à la valeur du paramètre, qui fonctionne très bien pour la plupart des cas:
(PARMANAME=")[\w\s]*"
Cependant, cette regex correspond uniquement à des espaces blancs et mot: caractères. Je veux l'étendre pour correspondre à tous les caractères entre les deux guillemets. Le problème est que la valeur elle-même peut contenir (échappé) entre guillemets, par exemple .:
PARAM="the name of this param is \"param\""
Comment puis-je correspondre (et remplacer) correctement?
Ma Java méthode ressemble à ceci:
/**
* @param input input string
* @param params list of parameters to hide
* @return string with the value of the parameter being replace by ***
*/
public static String hideParamValue(String input, final String... params)
{
for (String param : params)
{
input = input.replaceAll("(" + param + "=)\\\"[\\w\\s]*\\\"", "$1***");
}
return input;
}
Merci pour toutes les bonnes réponses. Ils fonctionnent tous très bien pour mes cas de test. – martin