1

我需要从 C++ 中的以下字符串中提取括号 () 内的内容;

#82=IFCCLASSIFICATIONREFERENCE($,'E05.11.a','矩形',#28);

我尝试遵循正则表达式,但它给出的输出带有完整的括号。

std::regex e2 ("\\((.*?)\\)");
if (std::regex_search(sLine,m,e2)){
}

输出应该是:

 $,'E05.11.a','Rectangular',#28
4

3 回答 3

2

您要查找的结果应该在第一个匹配的子表达式中,即包含在[[1].first, m[1].second)区间中。

这是因为您的正则表达式也匹配封闭的括号,但您指定了一个分组子表达式,即(.*?). 这是一些文档的起点

于 2013-08-14T16:14:29.563 回答
1

使用前瞻:"(?<=\\()[^)]*?(?=\\))". 注意,因为这不适用于嵌套括号。

您还可以使用反向引用

于 2013-08-14T16:10:56.570 回答
1
(?<=\().*(?=\))

试试这个,我只在一台测试仪中测试过,但它有效。它基本上会查找 a 之后(和 a 之前的任何字符,)但不包括它们。

于 2013-08-14T16:11:29.450 回答