c++ - 捕获重复组的正则表达式

标签 c++ regex boost

我正在尝试使用正则表达式解析输入字符串。 try catch 重复组时遇到问题。我似乎总是匹配该组的最后一个实例。我试过使用不情愿(非贪婪)量词,但我似乎遗漏了一些东西。有人可以帮忙吗?

尝试了正则表达式:

(OS)\\s((\\w{3})(([A-Za-z0-9]{2})|(\\w{3})(\\w{3}))\\/{0,1}){1,5}?\\r

(OS)\\s((\\w{3}?)(([A-Za-z0-9]{2}?)|(\\w{3}?)(\\w{3}?))\\/{0,1}?){1,5}?\\r

输入字符串:

OS BENKL/LHRBA/MANQFL\r\n

我似乎总是捕获最后一组,即 MANQFL 组 (MAN QFL),我的目标是获得所有三个组(可以有 1-5 个组):

(BEN KL) , (LHR BA) and (MAN QFL). 

任何帮助将不胜感激。

最佳答案

当您在正则表达式中重复捕获组时,捕获组仅存储与其最后一次迭代匹配的文本。如果您需要捕获多次迭代,则需要使用多个正则表达式。 (.NET 是唯一的异常(exception)。它的 CaptureCollection 提供捕获组的所有迭代的匹配项。

关于c++ - 捕获重复组的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3133145/

相关文章:

c++ - 从客户端应用程序调试动态库

c++ - 如何检查返回函数并正确计算字符

c++ - Linux 中的交换内存速度

用于简单模式的 Java 正则表达式

c++ - 使用 C++ Boost 将字符串分成两部分?

C++ 函数 : Variadic templates with no arguments

python - 使用正则表达式匹配Python中的字母数字字符列表

javascript - 当用户在 Angular 中使用正则表达式仅输入 0 或 0.0 时如何显示错误消息?

c++ - 获取元素在 boost::multi_index_container 的有序索引中的位置

c++ - 使用 Boost.Build 和 C++ 管理库依赖关系