我有以下匹配占位符的模式,例如(%s
,%16.6fAl
,%d
等。)
%([a-z]+)\b|%([a-z0-9\.]{2,20})\b
%w
%1w
%2w
%3w
%O
%M
我试图查询并查看论坛,但我担心我的正则表达式知识有限。那里有人可能有解决方案吗?
答案 0 :(得分:1)
如果你想匹配除了五个非常具体的占位符,并且你的代码允许它,最简单的方法可能是首先匹配所有占位符,然后(如果匹配)使用另一个正则表达式检查五个“禁止”那些并忽略它们。编写一个与%d
,%1d
,%4d
,%4w
匹配但与%1w
不匹配的RegExp将会很有趣。当然可能,只是没有乐趣。
答案 1 :(得分:1)
你可能会尝试这个。它完成了你给出的例子。
%([A-LNP-VX-Z] +)\ C |%((?:[0-9] [^ W] {1,19})|(([AZ] {2,20 })))\ b'/ p>
答案 2 :(得分:0)
我认为你可能希望模仿匹配你真正想要的东西,而不是试图排除你不想要的东西。
这是printf
的粗略正则表达式%([+- #0])?(([1-9][0-9]*)|\*)?(\.([1-9][0-9]*)|\*)?([hljztL]|hh|ll)?[diuoxXfFeEgGaAspn]