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 回答