如何在c ++

时间:2015-11-24 10:22:20

标签: c++ regex

我们在这里有stackoverflow类似的问题:

但我的问题是:

首先,我尝试匹配字符串中的所有x,因此我编写了以下代码,并且它运行良好:

string str = line;
regex rx("x");
vector<int> index_matches; // results saved here 

for (auto it = std::sregex_iterator(str.begin(), str.end(), rx);
            it != std::sregex_iterator();
            ++it)
{
  index_matches.push_back(it->position());
}

现在,如果我尝试匹配我尝试替换的所有{ regex rx("x"); regex rx("{");regex rx("\{");

。{/ 1}

所以我得到了一个例外,我认为应该抛出异常,因为我们使用{ 有时表达正则表达式,并且它最终会在}中有regex,这就是它抛出异常的原因。

首先,我的解释是正确的吗?

第二个问题我需要使用上面相同的代码匹配所有{,是否可以将regex rx("{");更改为其他内容?

1 个答案:

答案 0 :(得分:3)

您需要在正则表达式中转义具有特殊含义的字符,即使用\{正则表达式。但是,\在C ++字符串文字中具有特殊含义。所以,接下来你需要在C ++字符串文字中转义具有特殊含义的字符,即写:

regex rx("\\{");