PHP正则表达式匹配两个针

时间:2009-10-01 09:17:58

标签: php regex

我希望将字符串中的2个元素提取到数组中。该字符串是天气预报:

Thursday at 08:00 BST: white cloud. 10°C (50°F)

我想要“白云”和“ 10°C ”部分。所以我需要在“ BST:”和“”之间以及“°C ”之间进行匹配。

我正在努力学习我需要的正则表达式,并且真的很感激帮助!

4 个答案:

答案 0 :(得分:3)

试试这个正则表达式:

^\w+ at \d{2}:\d{2} BST: ([^.]+)\. (-?\d+°C)

如果单词之间没有单一空格,请将其替换为\s+

答案 1 :(得分:2)

这样的事情应该做:

preg_match('/: (.*?)\. (-?\d+)/', $str, $matches);

需要注意的事项:

  • 在BST上不匹配,或者在我们搬到GMT时会在冬天中断
  • 注意负温度

答案 2 :(得分:0)

类似的东西:

/BST: (.*) ([0-9]+°C)/

如果尝试匹配,可能会出现问题:

/BST: (.*) ([0-9]+.C)/

答案 3 :(得分:0)

您可以使用capture groups。将捕获圆形parantheses中的任何内容(默认情况下),您可以获取它们之后匹配的内容:

:\s+([^.]*)\s+([\d]*)

如果这是您的正则表达式,您可以将其与preg_match一起使用:

$matches = array();
preg_match('/:\s+([^.]*)\s+([\d]*)/', $string, $matches);
然后

$matches将包含捕获组的内容。