最后一次出现后的 Smarty 子串?

Smarty substring after last occurrence?

需要从文本字符串中获取样式编号:

'The style number is A456RT' 'Style A456RT' 'Style number is A456RT'

只需要获取 A456RT 部分,即在最后一个 space 之后。尝试改编类似的答案但没有成功:

{$product.name|regex_replace:"/^\d+ /":""}

有没有简单的方法可以做到这一点?

您可以使用

{$product.name|regex_replace:'/.*\s(\w+)$/':''}

参见regex demo

如果代码不只是字母数字,那么您可以使用

{$product.name|regex_replace:'/.*\s(\S+)$/':''}

如果可以有任何尾随空格:

{$product.name|regex_replace:'/.*\s(\S+)\s*$/':''}

详情:

  • .* - 除换行符以外的任何零个或多个字符(如果可以换行,在第二个 / 之后添加 s)尽可能多
  • \s - 一个空格
  • (\S+) - 第 1 组:任何一个或多个 non-whitespace 个字符(\w+ 匹配一个或多个字母、数字或下划线)
  • \s* - 零个或多个空格
  • $ - 字符串结尾。

更简单的怎么样:

/[^ ]+$/gm

也就是...

[^ ] any character other than a space
+ One or more times
$ at the end of the line