2009-11-11 2 views
0

Я новичок в регулярных выражениях и хотел бы соответствовать первому и последнему вхождениям термина в php. например, в этой строке:php regex matching first и last

«Чарли, мэри, боб, боб, мэри, Чарли, Чарли, мэри, боб, боб, мэри, Чарли»

я хотел бы просто получить доступ к первому и последнему " charlie ", но не два в середине. как бы я просто совпадал с первым и последним появлением термина?

благодаря

ответ

2

Если вы знаете, что подстрока вы ищете (т.е. это не шаблон регулярного выражения.), И вы просто ищете позиции ваших подстрок, вы могли бы просто использовать эти:

strpos - Найти позицию первого вхождения строки

strrpos - позиция последнего вхождения символа в строке

0

Попробуйте это регулярное выражение:

^(\w+),.*\1 

Жадный * квантор позаботится о том, что строка между первым словом (\w+) и другое вхождение этого слова (\1, матч первая группировка) как можно больше.

0

Вы должны добавить ^ и $ символы в ваше регулярное выражение.

  • ^ - спички начала строки
  • $ - соответствует концу строки

В вашем случае это будет ^charlie соответствовать первому образцу и charlie$, чтобы соответствовать последнему образцу. Или, если вы хотите совместить оба, то это будет ^charlie|charlie$.

См. Также Start of String and End of String Anchors для получения более подробной информации об этих символах.

-1

Try взрываются строка.

$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