1

正規表現は私には謎のようなものです。SOで検索した後、Espressoをダウンロードしてチュートリアルを実行しましたが、それでも問題が解決しません。それは私の特定のニーズかもしれませんが、例は見つかりませんでした。私がやりたいのは、正確に2つの特定の大文字(または小文字、混合)と数字の文字列である一致を見つけることです。これが私がテストしたいケースです:

  • TL123
  • TL 123
  • tl123
  • tl 123
  • TLABC123
  • tlabc123

次に私がやろうとしているのはpreg_replace、その一致の結果です(そして、最終的には常に返さTL-123れます-たとえば)。

したがって、その後の文字または数字の組み合わせTLは戻りTL-、その逆も同様です。正しい方向への微調整は非常に役立ちます。ありがとう!

編集

これに必要なのは実際にはpreg_match_allかもしれません。

4

1 に答える 1

1

指定されたパターンに一致させるには、次を使用できます。

TL(?:[^0-9]*)(\d+)

TLこれは、数字ではない(または何もない)ものが続き、その後に数字のリストが続くものと一致します。

preg_replace()これは、次のようなPHPで使用できます。

$str = preg_replace('/TL(?:[^0-9]*)(\d+)/i', 'TL-$1', $str);

TLもちろん、この例では、それが一致させたい正確な文字であると想定しています。TLが単なるプレースホルダーであり、何にでも一致する可能性がある場合は、次を使用できます。

preg_replace('/([a-z]{2})(?:[^0-9]*)(\d+)/i', '$1-$2', $str);

これにより、2文字のみが一致するようにハードコーディングされています({2})。変更する必要がある場合は、これを任意の数に変更できます。

また、一致する文字を常に大文字にしたいが、小文字と一致させることができるようstrtoupper()にするため、(コールバックの代わりに)結果の前後で使用することをお勧めします。

于 2012-10-05T17:53:03.230 に答える