Name: value
variable: value
variable2: value
variable3: value
Name: value
variable: value
variable2: value
variable3: value
间距是有意的。我试图抓住从第一个“名称”的开头到下一个“名称”标签之前的最后一个值的结尾的所有内容。我一直在尝试使用正则表达式甚至是用空行预分割,但正如你所看到的那样,它会减少一半所需数据。这些数据集的范围可以从1集到无限量集。
我的最后一次尝试看起来像这样:
preg_match_all("/Name:(.*?)variable3:(.*?)$/s", $input_lines, $output_array);
我们非常感谢任何建议。提前谢谢!
答案 0 :(得分:2)
以负面展望尝试:
/Name:((?:.(?!Name:))*)/s
Expl。:查找“名称:”并从中捕获所有字符,直到找到一个后跟“名称:”。
我不确定你是否想要捕获这个名字,但我想你可以从中解决这个问题。
此致
答案 1 :(得分:0)
preg_match_all("/Name:(.*)Name:/si", $data, $matches);
print_r($matches);
我认为你的正则表达式中没有使用“s”(。*包括换行符)。
欢迎任何进一步的改进/帮助。