我想用正则表达式控制我的价值。
示例:
string value1 =" {1N851111-8M32-2234-B83K-123456789012}&#34 ;; //很好
正则表达式:
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]$[}]");
源代码:
#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;
}
我的输出:
Match not found
答案 0 :(得分:1)
将正则表达式声明更改为
std::regex control("^[{][A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}[}]$");
你误用了限制量词。看:
[{]{8}
- 匹配8个{
符号[A-Za-z0-9]{1}
- 匹配1个字母或数字[-]{4}
- 匹配4个连字符等此外,您在最后一个$
之前设置了}
字符串结尾锚点,因此,该模式在字符串结尾后查找}
,但是自动匹配。