2009-11-11 447 views
0

我是新來的正則表達式,並希望匹配的第一次和最後一次出現的術語在PHP中。例如在這一行:php正則表達式匹配第一個和最後一個

「查理,瑪麗,鮑勃,鮑勃,瑪麗,查理,查理,瑪麗,鮑勃,鮑勃,瑪麗,查理」

我想只是獲得第一個和最後「查理「,但不是中間的兩個。我怎麼會匹配一個術語的第一次和最後一次?

感謝

回答

2

如果你知道你要找的子字符串(即它不是一個正則表達式),而你只是在尋找你的子串的位置,你可以只是單純地使用這些:

strpos - 查找字符串

strrpos的第一次出現的位置 - 在一個字符串

0

試試這個正則表達式:

^(\w+),.*\1 

貪婪*量詞會照顧的第一個字(\w+)和該單詞的另一個發生(\1的比賽之間的串第一組)儘可能大。

0

您需要將^$符號添加到您的正則表達式中。

  • ^ - 匹配字符串
  • $的開始 - 匹配字符串

你的情況,這將是^charlie匹配第一樣品和charlie$去年樣本相匹配的結束。或者如果你想匹配,那麼它將是^charlie|charlie$

有關這些符號的更多細節,請參閱Start of String and End of String Anchors

-1

嘗試爆炸的字符串查找字符的最後一次出現的位置。

$names = "charlie, mary,bob,bob,mary, charlie, charlie, mary,bob,bob,mary,charlie"; 
$names_array = explode(",", $names); 

這樣做後,你有一個名稱的數組。你想要的最後,所以它會在位置0.

$first = $names_array[0]; 

它變得有點棘手與最後一個。你必須知道你有多少個名字[count()],然後,由於數組從0開始計數,你必須減去一個名字。

$last = $names_array[count($names_array)-1]; 

我知道這可能不是最好的答案可能的,也不是最有效的,但我認爲這是你真正開始得到編程,通過解決小問題。

祝你好運。

+0

end()也可用於獲取數組中的最後一個元素 – Galen 2009-11-11 22:46:01

相關問題