我正在尝试以yyyy-mm-dd格式检查日期字符串的格式。我这样调用regex_match函数:
if (regex_match(date, regex("/\d{4}-\d{2}-\d{2}/")))
传入的字符串正是" 1997-03-26"当我使用正则表达式测试器时,它会选择正则表达式。
我认为这与regex_match以及我调用它的方式有关但我不知道它还需要什么。
答案 0 :(得分:1)
这里不应该有正则表达式分隔符(包含该模式的那些/
符号)。
此外,反斜杠必须在常规字符串文字中加倍,但是,当您使用正则表达式时,建议使用原始字符串文字(原始字符串文字通常由帮助形成) 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 demo
请注意regex_match
需要完整的字符串匹配!否则,对于部分匹配,请使用regex_search
。
答案 1 :(得分:1)
你应该这样写:
"\\d{4}-\\d{2}-\\d{2}"
你需要双\\
来逃避反斜杠。请记住,您必须在C ++中转义它,然后然后正则表达式。
此外,不需要/
。
希望这有帮助!