%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
5 つの非常に限定的なプレースホルダーを除くすべてのプレースホルダーに一致させたい場合、コードでそれが許可されている場合、おそらく最も簡単な方法は、最初にすべてのプレースホルダーに一致させ、次に (一致した場合) 別の正規表現を使用して 5 つの「禁止された」ものをチェックし、無視することです。彼ら。%d
、 %1d
、 %4d
に 一致するが一致し%4w
ない RegExp を書くことは%1w
... 興味深いでしょう。確かに可能ですが、面白くありません。
不要なものを除外するのではなく、実際に必要なものをパターン マッチすることをお勧めします。
これはprintfの大まかな正規表現です
%([+- #0])?(([1-9][0-9]*)|\*)?(\.([1-9][0-9]*)|\*)? ([hljztL]|hh|ll)?[diuoxXfFeEgGaAspn]