正则表达式提取括号内的所有内容
Posted
技术标签:
【中文标题】正则表达式提取括号内的所有内容【英文标题】:Regex expression to extract everything inside brackets 【发布时间】:2013-08-14 16:04:40 【问题描述】:我需要从 C++ 中的以下字符串中提取括号 () 内的内容;
#82=IFCCLASSIFICATIONREFERENCE($,'E05.11.a','Rectangular',#28);
我尝试遵循正则表达式,但它给出的输出带有完整的括号。
std::regex e2 ("\\((.*?)\\)");
if (std::regex_search(sLine,m,e2))
输出应该是:
$,'E05.11.a','Rectangular',#28
【问题讨论】:
只是为了一般知识,这些被称为括号。.*?
应该是[^\)]*
,不应该。
【参考方案1】:
您要查找的结果应该在第一个匹配的子表达式中,即包含在[[1].first, m[1].second)
区间内。
这是因为您的正则表达式也匹配括号,但您指定了分组子表达式,即(.*?)
。这是一些documentation的起点
【讨论】:
【参考方案2】:使用前瞻:"(?<=\\()[^)]*?(?=\\))"
。请注意,因为这不适用于嵌套括号。
您也可以使用backreferences。
【讨论】:
【参考方案3】:(?<=\().*(?=\))
试试这个,我只在一台测试仪上测试过,但它有效。它基本上会查找 (
之后和 )
之前的任何字符,但不包括它们。
【讨论】:
以上是关于正则表达式提取括号内的所有内容的主要内容,如果未能解决你的问题,请参考以下文章