1

私は文全体を取得しようとしています:

PRICE CHANGE this this : this var1 : this/this (this) var2,var3 : 111,11 Price(€) : 1.021 start from : 2012-07-26 18:15:00

から:

timezone. PRICE CHANGE this : this var1 : this/this(this) var2, var3 : 119, 111 Price(€) : 5.021 start from : 2012-07-26 18:15:00 PRICE CHANGE this : this this2 var1 : this (this ) var2, var3 : 1604, 452 Price(€) : 6.014 start from : 2012-07-26 18:15:00 bla bla bla bla.

これを使用して:

body = "timezone. PRICE CHANGE this : this var1 : this/this(this) var2, var3 : 119, 111 Price(€)     : 5.021 start from : 2012-07-26 18:15:00 PRICE CHANGE this : this  this2 var1 : this  (this ) var2, var3 : 1604, 452 Price(€)   : 6.014 start from : 2012-07-26 18:15:00 bla bla bla bla."

$test = preg_match_all('/PRICE CHANGE\s*(.*?)*(\d+:\d+:\d+)', $body, $result);

うまくいかない、助けて?

4

2 に答える 2

1
preg_match_all('/PRICE CHANGE.*?(?=PRICE CHANGE)/', $body, $result);

あなたが構造について私たちに話していないことがない限り、トリックを行います。それが本当に価格変更のリストである場合、これはトリックを行い、はるかに読みやすくなります。

'(?='知らなかった場合は、先読みです。これは、次の文字をチェックするゼロ幅(文字に一致しない)アサーションです。怠惰な演算子と組み合わせると、分割するのに最適な方法になります。文字列。

于 2012-08-23T03:39:24.857 に答える
0

私の理解が正しければ、それぞれの変化から時間を捉えたいと思いますよね? それを行うには、次のように表現を変更できます。

'/PRICE CHANGE\s*(.*?)(\d+:\d+:\d+)/i'

たぶん、i修飾子は完全に必要ではありません。

于 2012-08-23T03:47:36.800 に答える