我需要从 C++ 中的以下字符串中提取括号 () 内的内容;
#82=IFCCLASSIFICATIONREFERENCE($,'E05.11.a','矩形',#28);
我尝试遵循正则表达式,但它给出的输出带有完整的括号。
std::regex e2 ("\\((.*?)\\)");
if (std::regex_search(sLine,m,e2)){
}
输出应该是:
$,'E05.11.a','Rectangular',#28
您要查找的结果应该在第一个匹配的子表达式中,即包含在[[1].first, m[1].second)
区间中。
这是因为您的正则表达式也匹配封闭的括号,但您指定了一个分组子表达式,即(.*?)
. 这是一些文档的起点
使用前瞻:"(?<=\\()[^)]*?(?=\\))"
. 注意,因为这不适用于嵌套括号。
您还可以使用反向引用。
(?<=\().*(?=\))
试试这个,我只在一台测试仪中测试过,但它有效。它基本上会查找 a 之后(
和 a 之前的任何字符,)
但不包括它们。