首页 > 解决方案 > 如何使用 C++ 正则表达式在方括号之间查找字符

问题描述

我有一个 C++ 正则表达式来搜索方括号内的字符,例如,如果字符串是 x[7:0],我想返回 7:0。这就是我的正则表达式的样子 -

std::regex reg("\[(.*?)\]");

当我编译(g++)时,我收到以下警告 -

../fixedPointFormatter.cc:30:18:警告:未知转义序列:']' std::regex reg("[(.*?)]"); ^~~~~~~~~~~

以下不返回任何内容...

if (regex_search(arg, matches, reg)) {
 for (int i=1; i<matches.size(); i++) {
   cout << matches[i] << endl;
 }
}

有人可以帮助确定这有什么问题吗?

标签: c++regex

解决方案


正则表达式需要使用[]进行转义\。但是,要将其提供给正则表达式,您需要转义\字符串中的 s。

std::regex reg("\\[(.*?)\\]");

推荐阅读