正则表达式适用于正则表达式测试程序但不适用于c ++

时间:2013-05-07 14:14:20

标签: c++ regex quotes

我正在尝试从文件中获取引号之间的内容,而我正在使用正则表达式。这是我正在使用的正则表达式:

id=\"([^\"]+)\"|title=\"([^\"]+)\"

如您所见,每个特殊字符都被转义。它在regex测试器中运行良好,但在c ++代码中使用时,找不到标题。身份证总是很好。我尝试了几种变体,甚至删除了一半(在|之前)

id="60973129" title="EPA"

这是我正在使用的C ++代码:

std::regex rgx("id=\"([^\"]+)\"|title=\"([^\"]+)\"");
std::smatch match;

if (std::regex_search(line, match, rgx)) {
    for (int i=0; i < match.size(); ++i) {
            std::cout << match[i];
    }
}

编辑:我发现如果单独放置,title=\"(.+?)\"确实有效,但是我必须使用几个正则表达式,这违背了我的目的,因为我需要稍后扫描更长的行。

1 个答案:

答案 0 :(得分:1)

它可能在测试人员中工作,因为它在字符串中说“做任何匹配”,而不是“整个事情匹配”。

无论如何,|是一个“或”,找到一个或另一个。要匹配显示的字符串,请更改|无论是空格,还是任何数量空格的指标,例如[\ t] +,我怀疑它会正常工作。