2009-11-11 231 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

相关问题