Regex Smarty删除一个特定单词和下一个逗号之间的所有内容

Regex Smarty删除一个特定单词和下一个逗号之间的所有内容,regex,string,smarty,Regex,String,Smarty,我想用smarty替换变量中的字符串(由于某些原因,我只能用smarty而不能用php) 我知道要写入的Smarty行将具有以下形状: {$MyVar | escape:“htmlall”| regex_replace:xxxxxx} 但是,我不知道更换后要放什么 在变量值中,字符串具有以下形状: Toto abcd1234 托托总是同一个词 abcd1234可以是任何字母数字字符或空格 逗号(,)是要删除的字符串的结尾 字符串可以位于变量值的开头、中间或结尾 我想删除: Toto和下一个

我想用smarty替换变量中的字符串(由于某些原因,我只能用smarty而不能用php)

我知道要写入的Smarty行将具有以下形状: {$MyVar | escape:“htmlall”| regex_replace:xxxxxx}

但是,我不知道更换后要放什么

在变量值中,字符串具有以下形状:

  • Toto abcd1234
  • 托托总是同一个词

  • abcd1234可以是任何字母数字字符或空格

  • 逗号(,)是要删除的字符串的结尾

字符串可以位于变量值的开头、中间或结尾

我想删除:

  • Toto和下一个逗号之间的字符串
  • 或者(更好)删除Toto、字符串和逗号
提前感谢您的帮助


Patrick

要从
Toto
删除整个子字符串,直到并包括逗号,您可以使用

|regex_replace:'/\bToto[^,]*,/':""
或者,如果使用独立变量:

{'/\bToto[^,]*,/'|preg_replace:'':$MyVar}

正则表达式细分:

  • \b
    -单词边界
  • Toto
    -单词“Toto”
  • [^,]*
    -0个或更多符号,而不是
  • -文字逗号

您好,非常感谢您的回复。当代码单独运行时,它就像一个符咒。但是,我已经有了这个与变量修改相关的智能代码:{$MyVar | escape:“htmlall”| replace:“:”;strstr:“:”:false | replace:“Word1”:“Word2”}我只是试图在我的末尾添加你的代码:{$MyVar | escape:“htmlall”| replace:“:”:“;strstrstr:”:“:false | replace:“Word1:”Word2“;preg|:”:“/\bTaille[*,”但它给出了一个错误:警告:preg_replace():无结尾分隔符“:”再次感谢您的帮助。PatrickTry添加到管道代码中:
|替换:'\b邮件[^,]*,':''
。或
| regex_replace:'/\b邮件[^,]*,/':“
| regex_replace:'/\b邮件[^,]*,/”:”工作正常。真的非常感谢斯特里比雪夫。帕特里克