2010-06-04 13 views
0

J'ai du mal à faire fonctionner mon C# Regex pour C++. En C# J'ai:Conversion de C# Regex en C++/CLI?

//using System.Text.RegularExpressions; 
Regex YourName = new Regex("?<name>\w{3,16}"); 

mais en C++ cela ne correspond pas correctement:

//using namespace System::Text::RegularExpressions; 
Regex^ rx = gcnew Regex("?<name>\w{3,16}", static_cast<RegexOptions>(RegexOptions::Compiled)); 

suivi de:

MatchCollection^ matches = rx->Matches(input); //input=String^ 

correspond toujours à 0 retour comte. Est-ce que je fais quelque chose de vraiment stupide? Y at-il quelque chose de spécial que vous devez faire pour convertir C# regex en C++ regex? Merci beaucoup pour toute lumière que vous pouvez apporter à ce sujet.

+1

C'est C#, C pas C n'a pas regexes de tout type. –

Répondre

3

Vous devez échapper à la \ du compilateur, comme ceci:

Regex^ rx = gcnew Regex("?<name>\\w{3,16}", static_cast<RegexOptions>(RegexOptions::Compiled)); 
+3

N'aurait-il pas besoin d'y échapper aussi en C#? OP, êtes-vous sûr que votre version C# n'a pas de chaîne littérale (commence par @ "...")? –

+0

hah, oui vous avez raison. Complètement manqué cela. Cela résout cependant, merci à vous deux. – Dororo