2017-02-01 3 views
1

Je suis nouveau à cette correspondance des expressions rationnelles et ont l'entrée de l'échantillon comme ci-dessous.,Comment capturer un groupe s'il y a une virgule entre guillemets dans regex?

1,2,Name,"12,3" 
1,2,Name,12 

Maintenant je besoin regex unique pour diviser les deux lignes qui, comme ci-dessous les groupes de capture ..,

input.1->1 
input.2->2 
input.3->Name 
input.4->"12,3" 

input.1->1 
input.2->2 
input.3->Name 
input.4->12 

i ont trouver regex et l'utiliser dans ExtractTextProcessor comme ça.,

(.+),(.+),(.+),(.+) 

il correspond comme ci-dessous ..,

input.1->1,2 
input.2->Name 
input.3->"12 
input.4->3" 

Et me arrêter si tout ce que je fais mal

S'il vous plaît quelqu'un me guide pour résoudre ce problème.,

Merci

Répondre

4

Cela devrait fonctionner.

(\d+),(\d+),(\w+),(\d+$|(?:\"*\d*,*)*) 

entrée:

1,2,Name,"12,3" 
1,2,Name,12 

sortie: (. *)

#1 
$1 = 1 
$2 = 2 
$3 = Name 
$4 = "12,3" 

#2 
$1 = 1 
$2 = 2 
$3 = Name 
$4 = 12 
+0

est possible sans donner cette \ w, \ d utiliser seulement –