2017-07-13 7 views
1

私はpreg_match_allを使用していますが、私はこの方法で解決できるかどうかはわかりません。数字のpreg_match_all 3整数の不明なセット

XXC033-101-143-147-175-142115-

セット(033-101-143、など)私が参照したいものをされています。次の行は、私が取得しています何の一部であり、に。しかし、(常に3つの整数を含む)セットの数は不明であると私はいつものみ2セットがあるだろう知っていたならば、私は以下を持つことになり、1から10までの任意の範囲とすることができます

if (preg_match_all('#([A-Z]{2}C)([0-9]{3})-([0-9]{3})-([0-9]{6})#', $wwalist, $matches)) 

...rest of code... 

はとにかくあり私は3つの整数の可能なセットの数を知る方法がないときにこれを行う。それらは常に#([A-Z]{2}C)-([0-9]{6})の間になります。

ご協力いただければ幸いです!ありがとう!

+0

は、テキストのより大きな体のビットを示すサンプル入力を投稿してくださいキャプチャする異なる部分文字列をいくつか(部分文字列の可変性を確認できるように)設定します。あなたの入力文字列を指定して、正確な出力を投稿してください。 – mickmackusa

答えて

3

使用

'#([A-Z]{2}C)([0-9]{3}-){1,10}([0-9]{6})#' 

{1,10}カッコ[0-9]{3}-で囲まれた前のサブパターンは、1〜10回繰り返すことを指定します。また

:それは不定最大数を0回以上繰り返すことができる場合

*を使用します。

無限の最大数に対して1回以上反復できる場合は、+を使用してください。

+0

ありがとう!私はこれについて別の質問をする必要があるかもしれませんが、ここに行きます:あなたの答えを使って$マッチ[2]をプリントアウトすると、3つの整数の最後の繰り返しだけが表示されます。 3つの整数のすべてのセットを出力する必要があります。何か案は?再度、感謝します! – hunter21188

+1

@ hunter21188キャプチャグループを少し変更する必要があります。https://regex101.com/r/Tw6a7I/1/を試してみてください。 – chris85

+0

@ chris85パーフェクト。正確に私が必要としたもの。ありがとうございました! – hunter21188

0

個別に/必要に応じて、このような基を取り込む、わずか3桁のストリングをターゲット:

パターン:(Demo

/[A-Z]{2}C\K(\d{3}-)(\d{3}-)?(\d{3}-)?(\d{3}-)?(\d{3}-)?(\d{3}-)?(\d{3}-)?(\d{3}-)?(\d{3}-)?(\d{3}-)?/ 
+0

投票は私からのものではありません。私はあなたの方法を試してみました。ありがとう!それが最初に答えられて以来、正しい答えに投票しました。あなたに最高の投票をしました。 – hunter21188

+0

どちらもうまくいったが、他の答えはもっと簡単だった。ありがとう。 – hunter21188

+0

です!私のコメントで言及したのは元の質問の一部ではなく、むしろ何か追加のものでした。 '?:'を追加するとコメントに私の別の質問が解決されました。 – hunter21188

関連する問題