J'ai une exportation de données à partir d'un système Progress OpenEdge que je veux analyser en JavaScript. Je voudrais trouver tous les champs de l'exportation en utilisant une expression régulière.Regex pour l'analyse des chaînes avec des guillemets dans l'exportation de données OpenEdge
J'ai essayé beaucoup de choses semblables à ceci: /("[^"]*")|[^\s]+/g
J'ai également essayé d'expérimenter avec le lookahead négatif (?!"")
mais jusqu'ici je n'ai pas réussi.
Un échantillon de sortie d'exportation pourrait ressembler à quelque chose semblable à ceci:
12345 24,25 0 2015-06-30T14:53:14.891 "12345" "24,25" "0" "2015-06-30T14:53:14.891" "" yes no ? "String with ""quoted"" word" "String
with a multi
line string. "" <- Just a quote
" " This is the last value "
6789 35,36 0 2016-07-31T15:54:15.892 "6789" "35,36" "0" "2016-07-31T15:54:15.892" "" no yes ? "Just a simple string" ? ?
Les champs sont:
DEFINE TEMP-TABLE tt_test NO-UNDO
FIELD valueA AS INTEGER
FIELD valueB AS DECIMAL
FIELD valueC AS INTEGER
FIELD valueD AS DATETIME
FIELD valueE AS CHARACTER
FIELD valueF AS CHARACTER
FIELD valueG AS CHARACTER
FIELD valueH AS CHARACTER
FIELD valueI AS CHARACTER
FIELD valueJ AS LOGICAL
FIELD valueK AS LOGICAL
FIELD valueL AS LOGICAL
FIELD valueM AS CHARACTER
FIELD valueN AS CHARACTER
FIELD valueO AS CHARACTER
.
Le format d'exportation est: Tous les champs sont séparés par un espace. Les chaînes sont contenues entre guillemets (") .S'il y a une citation dans la chaîne qui est échappée en utilisant deux guillemets (" ") .S'il y a une chaîne vide qui est aussi deux guillemets (« ») mais avec des espaces délimiteurs autour d'eux.
les types de données réelles et le fait que cela est un système d'avancement n'a pas d'importance, il est juste de donner un contexte à ma question.
donc, pour résumer : Comment puis-je écrire une expression régulière (compatible avec JavaScript) qui sépare avec succès les différentes parties des données exportées tout en ignorant les guillemets doubles dans les chaînes?
Merci! J'avais peur que cela puisse être le cas. – Patrik