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
相关产品推荐
相关产品推荐

