匹配匹配任何直到'%'不跟'%'然后跟一组字符

Matching matching anything till '%' not followed by '%' and followed by a set of chars

我想匹配所有内容,直到找到奇数个 % 后跟 2 个可选组和 1 个必填组。 (这些组类似于 C++ std::printf("%22lld")

我正尝试在 C++ 中执行此操作,并且我已经尝试了这两个正则表达式:

我使用的 C++ 版本不支持后视,但它支持前视。

测试字符串:arg1 %%d arg %22lld,应该匹配
group1: arg1 %%d arg%
group2:22
group3:ll
group3:d

测试字符串:arg % %1586lld asd %d 应该匹配
group1: arg % %1586lld asd %
group2:
group3:
group3:d

这是我尝试过的链接。

这个正则表达式应该符合您的需要:

/([^\s].*?(?:%(?:%%)*))([0-9.]*)([lhjztL]*)([cCdiouxXeEfgGaAnpsSZRr])/g

Example