使用 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
之后的任何内容作为可选匹配项,直到字符串结尾。
我正在为 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
之后的任何内容作为可选匹配项,直到字符串结尾。