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

分隔符字符之间的php正则表达式,php,regex,delimiter,shortest,Php,Regex,Delimiter,Shortest,我正试图找到解决这个问题的办法。 我有这样一个字符串“&M26&M35.45&TN&C150250,10&f54f” 我想把它转换成一个数组,它包含了在&和#之间的所有匹配项。所以在我的场景中,我希望 0: M35.45 1: TN 2: C150,250,10 我试着用正则表达式来做 $haystack = "&M26&M35.45#&TN#&C150,250,10# f54f#"; if (preg_match_all("/(?<=&).*?(

我正试图找到解决这个问题的办法。 我有这样一个字符串“&M26&M35.45&TN&C150250,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]);
如果您看到,第一个匹配包含一些我不需要的字符。 所以我试图在我的分隔符之间找到最短的匹配,但我不知道怎么做。谢谢大家!

当你说“我不需要这个角色”时,你应该从你的选择中排除这个角色。也就是说,
[^&]
。生成的正则表达式如下所示:

/(?<=&)[^&]*?(?=#)/s
/(?<=&)[^&]*?(?=#)/s
Array
(
    [0] => M35.45
    [1] => TN
    [2] => C150,250,10
)