この式には、いくつかの高度な機能が含まれています。まず、最も簡単:\d{3}
正確に3桁を意味します。これらはあなたの数千です。
次に:++
これは+(1つ以上を意味する)の変形ですが、所有格、つまり何千ものすべてを食べることを意味します。なぜこれが必要なのか完全にはわかりません。
?:
これは、キャプチャされていないグループであることを意味します。これは、パフォーマンス上の理由から存在するものであり、省略できると思います。
?=
これは、そのグループが存在するかどうかだけがチェックされ、一致した文字列にはカウントされないことを意味すると思います。つまり、置き換えられません。
?!
は否定的な先読みです-私はそれを完全には理解していませんが、それは一致してはならないことを意味すると思います。つまり、一致したシーケンスの最後に別の数字がないことを意味します。これにより、最初のグループが正しい数字を取得できるようになります。たとえば、10000は10(000)としてのみ一致させることができますが、私が何を意味するかがわかる場合は1(000)0として一致させることはできません。
先読みを通して、私がそれを正しく理解している場合(私はそれをテストしていません)、最初のグループだけが実際に置き換えられます。これは一致するグループだからです。