Преобразование C # Regex в C ++ / CLI? - PullRequest
0 голосов
/ 05 июня 2010

У меня проблемы с тем, чтобы мой C # Regex работал на C ++. В C # у меня есть:

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

но в C ++ это не совсем правильно:

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

с последующим:

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

Матчи всегда возвращают 0 отсчетов. Я делаю что-то действительно глупое? Есть ли что-то особенное, что вам нужно сделать, чтобы преобразовать регулярное выражение C # в регулярное выражение C ++? Большое спасибо за любой свет, который вы можете пролить на это.

1 Ответ

3 голосов
/ 05 июня 2010

Вам нужно экранировать \ из компилятора, например:

Regex^ rx = gcnew Regex("?<name>\\w{3,16}", static_cast<RegexOptions>(RegexOptions::Compiled));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...