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
)
我正在尝试找到解决此问题的方法。 我有这样的字符串 "&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
)