我是新来的正则表达式,并希望匹配的第一次和最后一次出现的术语在PHP中。例如在这一行:php正则表达式匹配第一个和最后一个
“查理,玛丽,鲍勃,鲍勃,玛丽,查理,查理,玛丽,鲍勃,鲍勃,玛丽,查理”
我想只是获得第一个和最后“查理“,但不是中间的两个。我怎么会匹配一个术语的第一次和最后一次?
感谢
我是新来的正则表达式,并希望匹配的第一次和最后一次出现的术语在PHP中。例如在这一行:php正则表达式匹配第一个和最后一个
“查理,玛丽,鲍勃,鲍勃,玛丽,查理,查理,玛丽,鲍勃,鲍勃,玛丽,查理”
我想只是获得第一个和最后“查理“,但不是中间的两个。我怎么会匹配一个术语的第一次和最后一次?
感谢
试试这个正则表达式:
^(\w+),.*\1
贪婪*
量词会照顾的第一个字(\w+
)和该单词的另一个发生(\1
的比赛之间的串第一组)尽可能大。
您需要将^
和$
符号添加到您的正则表达式中。
^
- 匹配字符串$
的开始 - 匹配字符串你的情况,这将是^charlie
匹配第一样品和charlie$
去年样本相匹配的结束。或者如果你想匹配,那么它将是^charlie|charlie$
。
有关这些符号的更多细节,请参阅Start of String and End of String Anchors。
尝试爆炸的字符串查找字符的最后一次出现的位置。
$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];
我知道这可能不是最好的答案可能的,也不是最有效的,但我认为这是你真正开始得到编程,通过解决小问题。
祝你好运。
end()也可用于获取数组中的最后一个元素 – Galen 2009-11-11 22:46:01