Comment puis-je obtenir la sous-chaîne " It's big \"problem "
en utilisant une expression régulière ?
s = ' function(){ return " It\'s big \"problem "; }';
Comment puis-je obtenir la sous-chaîne " It's big \"problem "
en utilisant une expression régulière ?
s = ' function(){ return " It\'s big \"problem "; }';
Il faut se rappeler que les regexps ne sont pas une solution miracle pour tout ce qui concerne les chaînes de caractères. Certaines choses sont plus simples à faire avec un curseur et une recherche linéaire, manuelle. A LFC ferait l'affaire assez trivialement, mais il n'y a pas beaucoup d'implémentations CFL (afaik).
Une version plus étendue de https://stackoverflow.com/a/10786066/1794894
/"([^"\\]{50,}(\\.[^"\\]*)*)"|\'[^\'\\]{50,}(\\.[^\'\\]*)*\'|“[^”\\]{50,}(\\.[^“\\]*)*”/
Cette version contient également
“
et fermer ”
)J'ai rencontré un problème similaire en essayant de supprimer les chaînes entre guillemets qui peuvent interférer avec l'analyse de certains fichiers.
J'ai fini par trouver une solution en deux étapes qui bat toutes les regex alambiquées que vous pouvez inventer :
line = line.replace("\\\"","\'"); // Replace escaped quotes with something easier to handle
line = line.replaceAll("\"([^\"]*)\"","\"x\""); // Simple is beautiful
Plus facile à lire et probablement plus efficace.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.