c++ - C++ 11 中带有选项 R 的正则表达式

标签 c++ regex

我在使用 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/

相关文章:

c++ - 错误 : expected type-specifier before ‘Elem’

javascript - 在同一行中多次匹配字符串模式

regex - 增加字符串中的数字并将其填充为零

algorithm - 替换 `find_if`函数

c++ - 输入流迭代器和异常

c++ - Windows Phone 8.1 是否支持 select() 套接字函数?

c++ - 跨平台可重复数字生成器

objective-c - 使用 NSRegularExpression 从正则表达式中提取部分

regex - 如何 grep 查找所有非 ASCII 字符?

java - 如何检测包含任意字符串的模式?