我想检查日期字符串的格式为yyyy-mm-dd格式。我打电话了regex_match功能,像这样:正确使用regex_match
if (regex_match(date, regex("/\d{4}-\d{2}-\d{2}/")))
中所传递的字符串正是“1997年3月26日”当我使用正则表达式测试它拿起正则表达式。
我想这是与regex_match和我打电话给它的方式,但我不知道它还需要什么。
我想检查日期字符串的格式为yyyy-mm-dd格式。我打电话了regex_match功能,像这样:正确使用regex_match
if (regex_match(date, regex("/\d{4}-\d{2}-\d{2}/")))
中所传递的字符串正是“1997年3月26日”当我使用正则表达式测试它拿起正则表达式。
我想这是与regex_match和我打电话给它的方式,但我不知道它还需要什么。
你应该写这样的:
"\\d{4}-\\d{2}-\\d{2}"
你需要双\\
转义反斜线。记住,你必须用C++来逃避它,然后然后正则表达式。
另外,不需要/
。
希望这会有所帮助!
这里不应该有正则表达式分隔符(这些/
符号包含模式)。
此外,反斜杠必须在规则字符串一倍,但是,当你使用正则表达式的工作,最好是使用原始字符串字面量(原始字符串字面量通常与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;
}
介意regex_match
需要整个字符串匹配!否则,对于部分匹配,请使用regex_search
。
你能解释一下吗?我实现了这一点,它没有工作 –
我提供了一个完整的演示。请检查并告诉我是否仍有不清楚的地方。 –
对于响应缓慢,我很抱歉,我在笔记本电脑上,它很不方便。 –
非常感谢! –
没问题!如果这对您有用,请继续并将其标记为“接受的解决方案”。这样,任何有此问题的人都可以轻松找到答案:) @KyleJensen – Spencer4134
不需要使用双反斜杠 - 在处理正则表达式时,应该只使用原始字符串文字。 –