我想匹配所有内容,直到依次找到奇数个%
,然后是2个可选组和1个强制组。 (这些组类似于C ++ std::printf("%22lld")
)
我正在尝试使用C ++进行此操作,并且尝试了这两个正则表达式:
第一个字符支持'%'的奇数,但如果必需组为空,则不支持:
.*?(?=%([0-9.]*)([lhjztL]*)([cCdiouxXeEfgGaAnpsSZRr]))
(只能捕获%,但不能超过1%)
此函数能够处理%的奇数个案例,但如果%的必填字段的奇数为空,则无法处理:
((([^%]*)(?!\s)(?:%{2})*)*%)([0-9.]*)([lhjztL]*)([cCdiouxXeEfgGaAnpsSZRr])
我使用的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
这里是我尝试过的链接。
答案 0 :(得分:0)