使用 Twig preg_replace 将最后一次出现替换为字符串结尾

Replace last occurrence to end of string using Twig preg_replace

我正在为 PHP 使用 Twig 模板,插件 (https://github.com/jasny/twig-extensions) 包括 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})/","")

如何修改上面的正则表达式以获得我想要的结果?

谢谢

你可以使用这个:

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

如果您想要从 -XX- 开始直到结尾删除任何内容,请使用 $ 锚字符来定义您想要匹配直到字符串的最后一个字符。

你可以这样做:

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

\w匹配0-9A-Z和a-z.

查看正则表达式的实际应用:

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

编辑:

更新了正则表达式,将 -XX 之后的任何内容作为可选匹配项,直到字符串结尾。