6

%s( 、%16.6fAl%dなど) などのプレースホルダーに一致する次のパターンがあります。

%([a-z]+)\b|%([a-z0-9\.]{2,20})\b

ただし、次のプレースホルダーは無視する必要があります。

%w %1w %2w %3w %O %M

フォーラムを調べて確認しようとしましたが、正規表現の知識が限られているのではないかと心配しています。解決策を持っている人はいますか?

4

3 に答える 3

1

あなたはこれを試すかもしれません。それはあなたの与えられた例を満たしています。

%([a-lnp-vx-z]+)\b|%((?:[0-9][^w]{1,19})|(([az.]{2,20})) )\b

于 2013-01-01T09:34:46.400 に答える
1

5 つの非常に限定的なプレースホルダーを除くすべてのプレースホルダーに一致させたい場合、コードでそれが許可されている場合、おそらく最も簡単な方法は、最初にすべてのプレースホルダーに一致させ、次に (一致した場合) 別の正規表現を使用して 5 つの「禁止された」ものをチェックし、無視することです。彼ら。%d%1d%4dに 一致するが一致し%4wない RegExp を書くことは%1w... 興味深いでしょう。確かに可能ですが、面白くありません。

于 2013-01-01T06:13:50.357 に答える
0

不要なものを除外するのではなく、実際に必要なものをパターン マッチすることをお勧めします。

これはprintfの大まかな正規表現です

%([+- #0])?(([1-9][0-9]*)|\*)?(\.([1-9][0-9]*)|\*)? ([hljztL]|hh|ll)?[diuoxXfFeEgGaAspn]
于 2013-01-01T06:07:43.227 に答える