我正在努力寻找解决这个问题的方法。我有一个像这样的字符串"&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
如果你看到,第一个匹配包含一些我不需要的字符。我想让分隔符之间的匹配最短但我不知道怎么做。谢谢你!
当你说"我不需要这个字符" -你应该从你的选择中排除这个字符。即[^&]
。得到的正则表达式如下:
/(?<=&)[^&]*?(?=#)/s
新结果为:
Array
(
[0] => M35.45
[1] => TN
[2] => C150,250,10
)