我有以下匹配占位符的模式,例如 ( %s
, %16.6fAl
, %d
, 等):
%([a-z]+)\b|%([a-z0-9\.]{2,20})\b
但是,我确实需要忽略以下占位符:
%w
%1w
%2w
%3w
%O
%M
我试图查找并检查论坛,但恐怕我的正则表达式知识有限。有没有人可能有解决方案?
我有以下匹配占位符的模式,例如 ( %s
, %16.6fAl
, %d
, 等):
%([a-z]+)\b|%([a-z0-9\.]{2,20})\b
但是,我确实需要忽略以下占位符:
%w
%1w
%2w
%3w
%O
%M
我试图查找并检查论坛,但恐怕我的正则表达式知识有限。有没有人可能有解决方案?
你可以试试这个。它满足您给定的示例。
%([a-lnp-vx-z]+)\b|%((?:[0-9][^w]{1,19})|(([az.]{2,20})) )\b
如果您想匹配除五个非常具体的占位符之外的所有占位符,并且您的代码允许,最简单的方法可能是首先匹配所有占位符,然后(如果匹配)使用另一个正则表达式检查五个“禁止”的占位符并忽略他们。编写一个匹配%d
, %1d
, %4d
, %4w
但不匹配 的 RegExp%1w
将是……有趣的。当然可能,只是不好玩。
我认为您可能想要模式匹配您实际想要的内容,而不是尝试排除您不想要的内容。
这是 printf 的粗略正则表达式
%([+- #0])?(([1-9][0-9]*)|\*)?(\.([1-9][0-9]*)|\*)? ([hljztL]|hh|ll)?[diuoxXfFeEgGaAspn]