php 分隔字符之间的正则表达式

php regex between delimiter chars

我正在尝试找到解决此问题的方法。 我有这样的字符串 "&M26&M35.45#&TN#&C150,250,10# f54f#" 我想将其转换为一个数组,其中包含“&”和“#”之间的所有匹配项。所以在我的场景中我想要

0: M35.45
1: TN
2: C150,250,10

我试着用正则表达式来做到这一点

$haystack = "&M26&M35.45#&TN#&C150,250,10# f54f#";
if (preg_match_all("/(?<=&).*?(?=#)/s", $haystack, $result))
print_r($result[0]);

但是这样我得到:

0: M26&M35.45
1: TN
2: C150,250,10

如果你看到了,第一个匹配项包含一些我不需要的字符。 所以我试图在我的分隔符之间获得最短的匹配,但我不知道如何。谢谢!

当你说 "I don't need this character" - 你应该从你的选择中排除这个角色。即,[^&]。您生成的正则表达式是这样的:

/(?<=&)[^&]*?(?=#)/s

新结果是:

Array
(
    [0] => M35.45
    [1] => TN
    [2] => C150,250,10
)