我在使用 Regex 的 C++ 中有以下语句:
if (regex_match(argv[i], regex(R"((.*)\.o)")))
我现在的问题是 regex(R"((.*)\.o)")"
做什么?我知道外部 regex_match 函数会检查 argv[i]
等于用逗号分隔的第二个语句。如果它们相等,则计算结果为 true,否则计算结果为 false。
最佳答案
regex(XXXX)
创建一个新的 std::regex
对象,调用 appropriate constructor取决于 XXXX
是什么。在本例中,它是该列表中的第二个。
因为...
R"(...)"
是一个 raw string literal ,这让您可以在正则表达式中使用反斜杠之类的东西,而不必像在普通字符串文字中那样对它们进行转义。
如果您不知道正则表达式本身匹配什么,甚至不知道正则表达式是什么……那是一个更大的话题,您可以从大量教程开始。
(使用 std::regex_search()
和 \.o$
的 RE 将是更好的写法,IMO,或者一种不根本不使用 RE。)
关于c++ - C++ 11 中带有选项 R 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53344362/