2010-10-29 4 views
0

J'ai importé la bibliothèque Boost dans un .dll que j'utilise. J'essaye d'analyser une chaîne using:Boost wregex exception de lancement, syntaxe regex faux?

boost::wregex regPlayerAtSeat(L"*Governor: Seat.?[1-9].*"); 

Mais tout ce que j'obtiens est une exception de service d'interopérabilité. La syntaxe de mon regex est-elle incorrecte?

Merci, R.

Répondre

1

Le premier * ne semble pas avoir de caractère devant. Dans regex, il agit comme quantifier, pas comme un joker comme dans les lignes de commande UNIX et ainsi de suite. Vous voulez probablement quelque chose comme .* à sa place, mais c'est en partie juste une supposition. La regex complète alors ressembler à ceci:

boost::wregex regPlayerAtSeat(L".*Governor: Seat.?[1-9].*"); 

.* correspondra à zéro ou plusieurs répétitions of (almost) any character (probablement pas des sauts de ligne, mais je ne sais pas le fonctionnement interne du moteur regex boost). Est-ce que c'est ce que tu cherchais au début de ta chaîne? Sinon, puisque vous ne l'avez pas ancré votre regex, vous pourriez être en mesure d'utiliser simplement:

boost::wregex regPlayerAtSeat(L"Governor: Seat.?[1-9]"); 

Cela dépendra de vous quoi exactement essayer de faire correspondre et quel format il est, cependant.

+0

Merci, vous aviez raison avec le. *, Je ne sais pas pourquoi je ne l'ai pas repéré. J'avais des problèmes pour installer les bibliothèques de boost et à cause de la façon dont ça se voyait dans le débogueur, je me demandais si un fichier .dll était en train de mal ... une longue histoire. Quoi qu'il en soit, merci. – flavour404