Konwertuj wyrażenie regularne Perla na równoważne wyrażenie regularne ECMAScript

Teraz używam VC ++ 2010, alesyntax_option_type VC ++ 2010 zawiera tylko następujące opcje:

static const flag_type icase = regex_constants::icase;
static const flag_type nosubs = regex_constants::nosubs;
static const flag_type optimize = regex_constants::optimize;
static const flag_type collate = regex_constants::collate;
static const flag_type ECMAScript = regex_constants::ECMAScript;
static const flag_type basic = regex_constants::basic;
static const flag_type extended = regex_constants::extended;
static const flag_type awk = regex_constants::awk;
static const flag_type grep = regex_constants::grep;
static const flag_type egrep = regex_constants::egrep;

Nie zawiera perl_syntax_group (Biblioteka Boost ma opcję).Nie chcę jednak korzystać z biblioteki Boost.

W Perlu jest wiele wyrażeń regularnych, więc chcę przekonwertować istniejące wyrażenia regularne Perla naECMAScript(lub dowolny inny, który obsługuje VC ++ 2010). Po konwersji mogę używać równoważnych wyrażeń regularnych bezpośrednio w VC ++ 2010 bez korzystania z libray innej firmy.

Jeden przykład:

const boost::tregex e(__T("\\A(\\d{3,4})[- ]?(\\d{4})[- ]?(\\d{4})[- ]?(\\d{4})\\z"));
const CString human_format = __T("$1-$2-$3-$4");
CString human_readable_card_number(const CString& s)
{
   return boost::regex_replace(s, e, human_format);
}
CString credit_card_number = "1234567887654321";
credit_card_number = human_readable_card_number(credit_card_number);
assert(credit_card_number == "1234-5678-8765-4321");

W powyższym przykładzie chcę dokonać konwersjie iformat doECMAScript wyrażenia stylu.

Czy można znaleźć ogólny sposób konwersji wszystkich wyrażeń regularnych Perla naECMAScript styl? Czy są jakieś narzędzia, aby to zrobić?

Każda pomoc zostanie doceniona!

questionAnswers(1)

yourAnswerToTheQuestion