Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 正则表达式匹配的正确使用_C++_Regex - Fatal编程技术网

C++ 正则表达式匹配的正确使用

C++ 正则表达式匹配的正确使用,c++,regex,C++,Regex,我正在尝试检查yyyy-mm-dd格式的日期字符串的格式。我调用regex_match函数如下: if (regex_match(date, regex("/\d{4}-\d{2}-\d{2}/"))) 传入的字符串正好是“1997-03-26”,当我使用正则表达式测试器时,它会选择正则表达式 我认为这与regex_match和我调用它的方式有关,但我不知道它还需要什么。这里不应该有regex分隔符(那些包含模式的符号) 此外,正则字符串文字中的反斜杠必须加倍,但是,当您使用正则表达式时,建议

我正在尝试检查yyyy-mm-dd格式的日期字符串的格式。我调用regex_match函数如下:

if (regex_match(date, regex("/\d{4}-\d{2}-\d{2}/")))
传入的字符串正好是“1997-03-26”,当我使用正则表达式测试器时,它会选择正则表达式


我认为这与regex_match和我调用它的方式有关,但我不知道它还需要什么。

这里不应该有regex分隔符(那些包含模式的符号)

此外,正则字符串文字中的反斜杠必须加倍,但是,当您使用正则表达式时,建议使用原始字符串文字(原始字符串文字通常是在
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;
}
#包括
#包括
使用名称空间std;
int main(){
bool found=regex_match(“1997-03-26”,regex(R“(\d{4}-\d{2}-\d{2})”);

cout这里不应该有正则表达式分隔符(那些包围模式的
/
符号)

此外,正则字符串文字中的反斜杠必须加倍,但是,当您使用正则表达式时,建议使用原始字符串文字(原始字符串文字通常是在
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;
}
#包括
#包括
使用名称空间std;
int main(){
bool found=regex_match(“1997-03-26”,regex(R“(\d{4}-\d{2}-\d{2})”);

你应该这样写:

"\\d{4}-\\d{2}-\\d{2}"
你需要双<代码> \/COD>以避免反斜杠。记住,你必须在C++中逃脱它,然后正则表达式。< /P> 此外,不需要
/


希望这有帮助!

您应该这样写:

"\\d{4}-\\d{2}-\\d{2}"
你需要双<代码> \/COD>以避免反斜杠。记住,你必须在C++中逃脱它,然后正则表达式。< /P> 此外,不需要
/


希望这有帮助!

你能进一步解释一下吗?我实现了这一点,但它不起作用。我提供了一个完整的演示。如果还有什么不清楚的地方,请检查并让我知道。很抱歉,响应速度太慢,我在笔记本上,不方便。嗨,凯尔,还有其他问题吗?你能进一步解释一下吗?我实现了这一点,但它没有workI已经提供了一个完整的演示。如果还有什么不清楚的地方,请检查并让我知道。我很抱歉反应太慢,我在笔记本上,这很不方便。嗨,Kyle,还有其他问题吗?没问题!如果这对你有效,请继续并将其标记为“已接受的解决方案”。这样,任何其他有此问题的人都可以轻松找到答案:)@Kylejensen无需使用双反斜杠-在处理正则表达式时,只需使用原始字符串文字。需要两个,一个什么都没做没有问题!如果这对您有效,请继续并将其标记为“已接受的解决方案”。这样,任何有这个问题的人都可以很容易地找到答案:)@Kylejensen不需要使用双反斜杠-在处理正则表达式时,应该只使用原始字符串文本。需要两个,一个什么都不做