Php preg_match_所有句子都匹配

Php preg_match_所有句子都匹配,php,preg-match-all,Php,Preg Match All,我正试图弄明白整句话: 价格更改此:此变量1:this/this(this)var2,var3:111,11价格(€):1.021开始时间:2012-07-26 18:15:00 发件人: 时区。价格变动本:本:本:本:本:本:本:本价格变动本:本:本:本:本:本价格变动本:本:本:本:本:本价格变动本:本:本:本:本:本:本价格变动本:本:本:本:本:本:本:本价格变动本:本:本:本:本:本:本:本价格变动6.014本:本:本:本:本:本:本:本:自:2012-07-26 18:15:00开始

我正试图弄明白整句话:

价格更改此:此变量1:this/this(this)var2,var3:111,11价格(€):1.021开始时间:2012-07-26 18:15:00

发件人:

时区。价格变动本:本:本:本:本:本:本:本价格变动本:本:本:本:本:本价格变动本:本:本:本:本:本价格变动本:本:本:本:本:本:本价格变动本:本:本:本:本:本:本:本价格变动本:本:本:本:本:本:本:本价格变动6.014本:本:本:本:本:本:本:本:自:2012-07-26 18:15:00开始

使用此选项:

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);
它不起作用了,救命啊

preg_match_all('/PRICE CHANGE.*?(?=PRICE CHANGE)/', $body, $result);
我会搞定的,除非你没有告诉我们关于结构的什么。如果它真的只是一个价格变化的列表,那么这将做得更好,更具可读性

如果您不知道的话,“(?=”是一个前瞻。它是一个零宽度(不匹配任何字符)断言,用于检查即将出现的字符。当与惰性运算符结合使用时,它可能是分解字符串的一种很好的方法

这就行了,除非你没有告诉我们关于这个结构的一些事情。如果它真的只是一个价格变化的列表,这就可以做到最好,而且可读性更高


如果您不知道的话,“(?=”是一个前瞻。它是一个零宽度(不匹配任何字符)检查即将到来的字符的断言。当与惰性运算符结合使用时,它可能是分解字符串的一种很好的方法。

如果我理解正确,您希望从每次更改中捕获时间,对吗?要做到这一点,您可以通过以下方式更改表达式:

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

也许
i
修饰符不是完全必要的。

如果我理解正确,您希望从每次更改中捕捉时间,对吗?要做到这一点,您可以通过以下方式更改表达式:

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

也许
i
修饰符不是完全必要的。

您缺少了最后一个/和(.*)没有意义,而且我也不确定“.”是否匹配一个“€”,尝试“/PRICE CHANGE\s+([\s\s]*?)(\d+:\d+:\d+)/gi'nevermind”,使用$test=
preg\u match\u all('/PRICE CHANGE\s*(\s+\s+\s+\d+\w+\w*)(\d+):\d+)解决它/“,$body,$result);
谢谢!urs解决方案也很好@shhac!谢谢!你错过了最后一个/和(.*)没有意义,而且我也不确定“.”是否匹配一个“€”,试试“/PRICE CHANGE\s+([\s\s]*?)(\d+:\d+)/gi'nevermind),使用$test=
preg\u match+\u all('/PRICE CHANGE\s*(\s+)(\s+)\s+\s+\d+\d+:\d+)\d+)解决它/“,$body,$result);
谢谢!urs解决方案也很好@shhac!谢谢!