首页 > 解决方案 > 带有选项 R 的 C++ 11 中的正则表达式

问题描述

我在使用正则表达式的 C++ 中有以下语句:

if (regex_match(argv[i], regex(R"((.*)\.o)")))

我现在的问题是regex(R"((.*)\.o)")"做什么?我知道外部 regex_match 函数检查argv[i]是否等于以逗号分隔的第二个语句。如果它们相等,则评估为 true,否则为 false。

标签: c++regex

解决方案


regex(XXXX)创建一个新对象,根据是什么std::regex调用适当的构造函数XXXX。在这种情况下,它是该列表中的第二个。

因为...

R"(...)"是一个原始字符串文字,它允许您在正则表达式中使用反斜杠之类的东西,而不必像在普通字符串文字中那样转义它们。

如果您不知道正则表达式本身匹配什么,甚至不知道正则表达式是什么......这是一个更大的话题,并且有很多教程可供您开始。

(使用std::regex_search()和 RE\.o$将是一种更好的编写方式,IMO 或根本不使用 RE 的方法。)


推荐阅读