最后一次出现后的 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
需要从文本字符串中获取样式编号:
'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