Maison >Java >javaDidacticiel >Comment diviser du texte séparé par des virgules avec des guillemets à l'aide d'expressions régulières ?
Diviser le texte séparé par des virgules avec des guillemets
Dans certains scénarios où les données textuelles contiennent des valeurs séparées par des virgules, il devient nécessaire de diviser les données basé sur des virgules. Cependant, des défis surviennent lorsque les données contiennent des chaînes avec des virgules intégrées entre guillemets.
Pour résoudre ce problème, une solution polyvalente consiste à utiliser une expression régulière qui cible spécifiquement les virgules situées en dehors des guillemets :
str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
Disséquer cette expression régulière :
Alternativement, le la même expression régulière peut être écrite dans un format plus lisible à l'aide du modificateur (? X), qui permet d'améliorer les expressions multilignes lisibilité :
String[] arr = str.split("(?x) " + ", " + // Split on comma "(?= " + // Followed by " (?: " + // Start a non-capture group " [^\"]* " + // 0 or more non-quote characters " \" " + // 1 quote " [^\"]* " + // 0 or more non-quote characters " \" " + // 1 quote " )* " + // 0 or more repetition of non-capture group (multiple of 2 quotes will be even) " [^\"]* " + // Finally 0 or more non-quotes " $ " + // Till the end (This is necessary, else every comma will satisfy the condition) ") " // End look-ahead );
Cette solution résout efficacement le problème du fractionnement du texte séparé par des virgules tout en préservant l'intégrité des chaînes contenant des virgules entre guillemets doubles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!