我正在使用带有插件(https://github.com/jasny/twig-extensions)的PHP的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})/","")
如何修改上述正则表达式以获得所需的结果?
谢谢
答案 0 :(得分:1)
您可以使用:
preg_replace("/-\d\d(-.*|)$/","","Coverking_CSC_Neosupreme_1Row-F-150_Series-01-MASS");
答案 1 :(得分:0)
如果要从-XX-
中删除任何内容,直到结尾,请使用$
锚点字符来定义您希望匹配到字符串的最后一个字符。
您可以这样做:
{{ str|preg_replace("/\-[0-9]{2}(\-[\w\-]+)?$/", "") }}
\ w匹配0-9 A-Z和a-z。
请参阅正则表达式:
https://regex101.com/r/aiKMDn/2
编辑:
更新了正则表达式,使-XX
之后的任何内容成为可选匹配,直到字符串结束。