2015-07-21 53 views
1

我試圖找到解決這個問題的方法。 我有這樣的「& M26 & M35.45#& TN#& C150,250,10#f54f#」 一個字符串,我希望把它改造成一個包含所有那些「&」之間的匹配數組和'#'。所以在我的情況我想有定界符字符之間的PHP正則表達式

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 

如果你看到的,第一個匹配包含一些我不需要的字符。 所以我試圖讓我的分隔符之間的最短匹配,但我不知道如何。謝謝!

回答

2

當你說「我不需要這個角色」時,你應該從你的選擇中排除角色。即,[^&]。你得到的正則表達式是這樣的:

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

新的結果是:

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

你說得對,我沒有這樣想過,謝謝 – Andrex

相關問題