我正在尝试以格式检查日期字符串的格式。我是这样调用regex_match函数的:
if (regex_match(date, regex("/\d{4}-\d{2}-\d{2}/")))传入的字符串正好是"1997-03-26“,当我使用正则表达式测试器时,它将获取正则表达式。
我认为这与regex_match和我称之为它的方式有关,但我不知道它还需要什么。
发布于 2016-02-04 20:07:13
你应该这样写:
"\\d{4}-\\d{2}-\\d{2}"您需要双\\来避免反斜杠。请记住,您必须在C++中转义它,然后再使用regex。
另外,不需要/。
希望这能有所帮助!
发布于 2016-02-04 20:03:45
这里不应该有正则分隔符(那些包含模式的/符号)。
此外,反斜杠必须在正则字符串文本中加倍,但是,在处理正则表达式时,建议使用原始字符串文字(原始字符串文字通常是在R"(的帮助下形成的,然后是)"包围序列,其中(和)也可以用其他分隔符替换)。
所以,你可以用
#include<regex>
#include <iostream>
using namespace std;
int main() {
bool found = regex_match("1997-03-26",regex(R"(\d{4}-\d{2}-\d{2})"));
cout<<(found?"found":"not found");
return 0;
}请参阅IDEONE演示
请注意,regex_match需要一个完整的字符串匹配!否则,对于部分匹配,请使用regex_search。
https://stackoverflow.com/questions/35210504
复制相似问题