我希望将字符串中的2个元素提取到数组中。该字符串是天气预报:
Thursday at 08:00 BST: white cloud. 10°C (50°F)
我想要“白云”和“ 10°C ”部分。所以我需要在“ BST:”和“。”之间以及“°C ”之间进行匹配。
我正在努力学习我需要的正则表达式,并且真的很感激帮助!
答案 0 :(得分:3)
试试这个正则表达式:
^\w+ at \d{2}:\d{2} BST: ([^.]+)\. (-?\d+°C)
如果单词之间没有单一空格,请将其替换为\s+
。
答案 1 :(得分:2)
这样的事情应该做:
preg_match('/: (.*?)\. (-?\d+)/', $str, $matches);
需要注意的事项:
答案 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
将包含捕获组的内容。