我们在这里有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("\{");
。
所以我得到了一个例外,我认为应该抛出异常,因为我们使用{
有时表达正则表达式,并且它最终会在}
中有regex
,这就是它抛出异常的原因。
首先,我的解释是正确的吗?
第二个问题我需要使用上面相同的代码匹配所有{
,是否可以将regex rx("{");
更改为其他内容?
答案 0 :(得分:3)
您需要在正则表达式中转义具有特殊含义的字符,即使用\{
正则表达式。但是,\
在C ++字符串文字中具有特殊含义。所以,接下来你需要在C ++字符串文字中转义具有特殊含义的字符,即写:
regex rx("\\{");