【问题标题】: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

【问题讨论】:

  • 只是为了一般知识,这些被称为括号。
  • .*? 应该是[^\)]*,不应该。

标签: c++ regex string


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    您也可以使用backreferences

    【讨论】:

      【解决方案3】:
      (?<=\().*(?=\))
      

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

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-26
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多