我需要从众多不同的文本源中提取相同类型的信息(例如,名字,姓氏,电话等),每个文本源具有不同的格式和感兴趣的变量的不同顺序。
我想要一个基于正则表达式进行提取并将结果作为描述性变量返回的函数。换句话说,不要将每个匹配结果作为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/