2017-01-21 5 views
0

Я использую шаблон Twig для PHP с плагином (https://github.com/jasny/twig-extensions), который включает в себя такие функции, как preg_replace.Замените последнее вхождение на конец строки с помощью Twig preg_replace

У меня есть строки последующие:

Coverking_CSC_Neosupreme_1Row-F-150_Series-01-MASS 
Coverking_CSC_Neosupreme_1Row-F-150_Series-01-ANYTHING 
Coverking_CSC_Neosupreme_1Row-F-150_Series-01 

Я хочу, чтобы заменить последнее вхождение -XX или -XXANYTHING с пустой строкой.

Таким образом, результаты для замены всех строк выше, должны быть

Coverking_CSC_Neosupreme_1Row-F-150_Series 

мне удалось посмотреть в Интернете и нашел следующее регулярное выражение для удаления последнего вхождения -XX

str|preg_replace("/\-[0-9]{2}(?!.*\-[0-9]{2})/","") 

Как может Я изменяю приведенное выше выражение, чтобы дать мне желаемые результаты?

Спасибо

ответ

1

Вы можете использовать это:

preg_replace("/-\d\d(-.*|)$/","","Coverking_CSC_Neosupreme_1Row-F-150_Series-01-MASS"); 
+0

Спасибо @ l-vadim. Я должен был добавить дополнительный сценарий. Строка не может заканчиваться на «-MASS». Это может просто закончиться «-XX» или «-XX-ANYTHING». – user2471801

+0

Вы можете перечислить все возможные сценарии? спасибо –

+0

также попробуйте мой пример, он работает с -XX-ANYTHING –

0

Если вы хотите лишить что-нибудь от -XX- до конца, используйте $ якорный символ для определения вы хотите, чтобы совпасть до последний символ строки.

Вы можете сделать что-то вроде этого:

{{ str|preg_replace("/\-[0-9]{2}(\-[\w\-]+)?$/", "") }}

Команда \ ш соответствует 0-9 A-Z и A-Z.

Смотрите регулярное выражение в действии:

https://regex101.com/r/aiKMDn/2

редактировать:

Обновлено регулярное выражение, чтобы иметь что-либо после -XX в качестве дополнительного матча до конца строки.