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!谢谢!