用于在第一个字符出现时拆分字符串的PHP Regex

2022-03-29 00:00:00 regex php preg-match preg-match-all

这可能是一个蹩脚的问题,但我完全是正则表达式的新手。我有一些格式为:

的文本数据

公司名称:公司名称,地点。公司地址:一些, 地址,在这里。
链接: http://www.somelink.com

现在,我想使用正则表达式将它们拆分成一个名称:值对数组。我正在尝试的正则表达式是/(.*):(.*)/preg_match_all(),它确实可以很好地处理前两行,但在第三行,它在一部分中返回"Link:http:",在另一部分中返回"//www.Somelink.com"。

那么,有没有办法只在第一次出现字符‘:’时拆分该行?


解决方案

您可能需要类似/(.*?):(.*)/的内容。*后面的?将使其成为"非贪婪的",因此它将以这种方式消耗尽可能少的文本。我想这对你的情况很管用。默认情况下,*是"贪婪的",并尝试匹配尽可能多的重复项。

编辑:有关使用*+运算符匹配重复的详细信息,请参阅here。

相关文章