Regex Java pour faire correspondre une chaîne entre guillemets avec des guillemets échappés


Je sais qu'il y a déjà beaucoup de questions comme la mienne mais je n'ai trouvé aucune réponse qui fonctionne en Java. J'écris donc une nouvelle question.

J'ai des fichiers texte avec du contenu comme ceci:

key1 = "This is a \"test\" text with escapes using '\\' characters";
key2 = 'It must work with \'single\' quotes and "double" quotes';

J'ai besoin d'une expression régulière qui correspond aux valeurs des guillemets doubles (ou des guillemets simples). Cette expression régulière doit prendre en charge les guillemets échappés et les barres obliques inverses échappées. L'expression régulière doit fonctionner avec les classes Java standard Pattern / Matcher.

Author: kayahr, 2010-03-23

1 answers

Essayez cette expression régulière:

'([^\\']+|\\([btnfr"'\\]|[0-3]?[0-7]{1,2}|u[0-9a-fA-F]{4}))*'|"([^\\"]+|\\([btnfr"'\\]|[0-3]?[0-7]{1,2}|u[0-9a-fA-F]{4}))*"

Et comme littéral de chaîne:

"'([^\\\\']+|\\\\([btnfr\"'\\\\]|[0-3]?[0-7]{1,2}|u[0-9a-fA-F]{4}))*'|\"([^\\\\\"]+|\\\\([btnfr\"'\\\\]|[0-3]?[0-7]{1,2}|u[0-9a-fA-F]{4}))*\""
 8
Author: Gumbo, 2010-03-23 09:28:38