2009-02-12 8 views
0

Je suis en train d'extraire certaines variables dans mon code C++ imbriqué dans les blocs
par exemple, si jeN'est-il pas possible d'utiliser 'Repeats' dans les lookaheads pour boost: regex?

 DEL_TYPE_NONE, 
      DEL_TYPE_DONE, 
    DEL_TYPE_WAIT, 

Je voudrais correspondre
"DEL_TYPE_NONE"
"DEL_TYPE_DONE"
"DEL_TYPE_WAIT"

J'ai fait mon modèle comme celui-ci,
std :: string pat ("(? < =^[\\ t]) [A-Z0-9 _] + (=, $) »)?.

mais je suis continuer à obtenir un message d'erreur lorsque le compilateur est Tyring lire mon modèle
Je ne comprends pas, mais il y a un problème ? marque après \\ t
Si je me débarrasser de?, puis il compile et ne trouve que « DEL_TYPE_WAIT »
pourquoi je ne peux pas utiliser répétitions dans la Lookahead? Plz aidez-moi je suis totalement perdu ici; (

merci

Répondre

2

J'ai trouvé la réponse. n de cette manual

lookbehind

(? < = motif) consomme aucun caractère, seulement si le modèle pourrait être adapté contre les caractères précédant l' position actuelle (motif doit être de longueur fixe).

0

Juste basé sur Posix Je dirais que votre regex est "DEL_TYPE _ ([ND] ONE | WAIT),"

qui vient après ce que vous avez énumérés ci-dessus. Je dirais que le vrai problème est avec vous double échapper à la t; vous devriez probablement faire [\ t \ s] * puisqu'il n'y aura peut-être pas de zéro ou un onglet/espace.

+0

Le code que je montre ci-dessus n'est qu'un exemple. réel est une pensée plus complexe. merci quand même ^^ –