我需要从众多不同的文本源中提取相同类型的信息(例如,名字,姓氏,电话等),每个文本源具有不同的格式和感兴趣的变量的不同顺序。

我想要一个基于正则表达式进行提取并将结果作为描述性变量返回的函数。换句话说,不要将每个匹配结果作为submatch[0], submatch[1], submatch[2], ...,返回,而是执行以下任一操作:

  • 返回std::map,以便可以通过以下方式访问子匹配项:
    submatch["first_name"], submatch["last_name"], submatch["telephone"]
  • 返回具有子匹配项的变量,以便可以通过以下方式访问子匹配项:
    submatch_first_name, submatch_last_name, submatch_telephone

  • 我可以编写一个围绕boost::regex的包装器类来做第一个包装器,但是我希望在C++ / Boost / STL / C中有一种内置的或更优雅的方式来做到这一点。

    最佳答案

    您可以使用“命名捕获组”吗?似乎返回 map 正是您想要的。

    例如,在RE2

    检查wikipedia,看看您喜欢的正则表达式库是否支持命名捕获。

    关于c++ - 将RegEx子匹配项分配给变量或映射(C++/C),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2709434/

    10-10 08:28