我正在尝试找到解决此问题的方法。 我有一个这样的字符串"& 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
如果你看,第一场比赛包含一些我不需要的角色。 所以我试图在我的分隔符之间进行最短的匹配,但我不知道如何。谢谢!
答案 0 :(得分:2)
当您说“我不需要此角色”时 - 您应该从您的选择中排除该角色。即,[^&]
。你得到的正则表达式是:
/(?<=&)[^&]*?(?=#)/s
新结果是:
Array
(
[0] => M35.45
[1] => TN
[2] => C150,250,10
)