You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Smarty regex_replace:如何提取MATCH后的首个目标字符串?

解决Smarty regex_replace提取MATCH后首个字符串的问题

你的当前代码仅移除了MATCH之前的内容,但保留了其后所有文本,要精准提取MATCH后的首个字符串,需要调整正则表达式,让它匹配整个文本并捕获目标内容:

正确代码

{$item->order->order->notes_priv|regex_replace:"/^.*?MATCH\s+(\S+).*$/s":"$1"}

正则说明

  • ^.*?MATCH:从字符串开头匹配任意字符(非贪婪模式)直到遇到MATCH
  • \s+:匹配MATCH后面的一个或多个空白字符(空格、制表符等)
  • (\S+):捕获一个或多个非空白字符(也就是你要提取的目标字符串,比如12、24,00)
  • .*$:匹配目标字符串之后的所有内容直到结尾
  • /s修饰符:让.匹配换行符,确保多行文本都能正确处理

效果验证

针对你的目标文本:

foo bar foo bar MATCH 12 foo bar
foo bar foo bar MATCH 24,00 foo bar

替换后会得到:

12
24,00

内容的提问来源于stack exchange,提问作者ARM777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 09:02:06