【发布时间】:2016-09-03 09:58:40
【问题描述】:
我构建了一个示例程序来使用正则表达式检查值。此示例在 Visual Studio 2012 上运行。
但在 Visual Studio 2003 上不存在 Regex。
我的问题是:如何在不使用 Regex 和 3rd 方库的情况下使用 Visual Studio 2003 检查值?
我的源代码:
#include "stdafx.h"
#include <regex>
#include <string>
using namespace std;
int main()
{
std::string code1 = "{1N851111-8M32-2234-B83K-123456789012}";
std::regex control("^[{]{8}[A-Za-z0-9]{1}[-]{4}[A-Za-z0-9]{1}[-]{4}[A-Za-z0-9]{1}[-]{4}[A-Za-z0-9]{1}[-]{12}[A-Za-z0-9]$[}]");
std::smatch match;
if (std::regex_search(code1, match, control))
{
std::cout << "MAtch found";
}
else
{
std::cout << "Match not found";
}
return 0;
}
【问题讨论】:
-
std::regex从 C++11 开始出现,因此预计在 VC2003 中它们会丢失。 -
您也可以使用 3rd-party 库,例如 PCRE 来解决您的任务。查看this blog post 了解详情。
-
@ForceBru 可能,他的意思是“检查”——对于以德语为母语的人(如果他是)来说,这是一个典型的错误,其中“kontrollieren”可能意味着检查和控制......
-
@Skydreampower,编写你自己的正则表达式引擎:P 或者只是使用一些
if语句:检查字符串中是否有足够的字符,它们是否由有效字母组成,检查每组等后面是否有- -
这可能会更好地被问到,“如何在没有正则表达式的情况下检查字符串是否是有效的 UUID?”
标签: c++ regex visual-studio-2003