J'utilise Java matcher pour essayer de correspondre à ce qui suit:expression régulière pour analyser la chaîne d'option
@tag TYPE_WITH_POSSIBLE_SUBTYPE -PARNAME1=PARVALUE1 -PARNAME2=PARVALUE2: MESSAGE
Le TYPE_WITH_POSSIBLE_SUBTYPE se compose de lettres avec des périodes.
Chaque paramètre doit être composé de lettres, et chaque valeur doit être composée de chiffres/lettres. Il peut y avoir 0 ou plusieurs paramètres. Immédiatement après la dernière valeur du paramètre vient le point-virgule, un espace, et le reste est considéré comme un message.
Tout doit être groupé.
Mon regexp actuelle (comme Java littérale) est:
(@tag)[\\s]+?([\\w\\.]*?)[\\s]*?(-.*=.*)*?[\\s]*?[:](.*)
Cependant, je continue à obtenir tous les paramètres comme un groupe. Comment puis-je obtenir chacun en tant que groupe séparé, si c'est même possible?
Je ne travaille pas beaucoup avec les expressions rationnelles, donc je gâche toujours quelque chose.
Merci. J'ai en fait quelque chose comme ça en ce moment (où je diviser les paramètres, mais j'espérais qu'il y avait un moyen de se retrouver avec des groupes de longueur variable ... – Uri
Autant que je sache, .NET est la seule saveur regex qui permet vous accédez à toutes les correspondances pour un groupe de capture, par opposition à la dernière. –