2017-01-21 111 views
0

我正在使用带有插件的PHP Twig模板(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

您可以使用此:如果你想要去除从-XX-直到结束任何

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

谢谢@ l-vadim。我应该添加一个额外的场景。该字符串可能不会以“-MASS”结尾。它可能只是以“-XX”或“-XX-ANYTHING”结尾。 – user2471801

+0

你能列出所有可能的情况吗?谢谢 –

+0

也尝试我的例子它使用-XX-ANYING –

0

,使用$锚角色来定义要匹配,直到字符串的最后一个字符。

你可以做这样的事情:

​​

的\ W 0-9 A-Z和A-Z匹配。

见正则表达式在行动:

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

编辑:

更新的正则表达式有后-XX作为可选的比赛,直到字符串的结尾什么。

相关问题