c++ - 如何在 C++ 中使用正则表达式匹配 "{"

标签 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("\{");

所以我得到了一个异常,我认为它应该抛出一个异常,因为我们使用 { 有时为了表达正则表达式,它期望在 regex 最后有 这就是它抛出异常的原因。

那么首先我的解释正确吗?

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

最佳答案

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

regex rx("\\{");

关于c++ - 如何在 C++ 中使用正则表达式匹配 "{",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33891038/

相关文章:

c++ - 从 Linux 到 Windows 交叉编译时应该如何处理字符编码?

regex - 限制正则​​表达式的字符数

c# - 正则表达式:将驼峰大小写转换为带下划线的所有大写

c++ - 来自线性化矩阵 CUDA 的唯一行

c++ - 无法将继承的类作为 SFINAE 的基础

regex - 使用正则表达式进行字符串操作

python - 如何正确运行Watchdog的RegexMatchingEventHandler?

regex - 如何在正则表达式中使用 awk 变量?

c++ - 使用模板在 C++ 中进行转换

c++ - 如何将 C++ 程序作为 Simulink block 运行?