Smarty regex_replace:如何在匹配后找到一个字符串

问题描述 投票:0回答:1

我们正在尝试在 tpl 文件中使用 regex_replace :

{$item->order->order->notes_priv|regex_replace:"/.+?(?=MATCH)/":""}

但这会留下“MATCH”之后的所有字符串,而不是“MATCH”之后唯一的第一个字符串。

我们有这段文本,只想在单词后输入一个字符串

MATCH

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

我们如何进行输入?

12
24,00

我们尝试了很多解决方案但没有成功。

regex replace smarty
1个回答
0
投票

你可以使用

regex_replace:'/.*MATCH\s+(\S+).*/':'$1'

请参阅 正则表达式演示

主要思想是匹配整个字符串,仅捕获一部分并替换为对捕获的组值的反向引用。

详情

  • .*
    - 除了换行符之外的任何零个或多个字符,尽可能多
  • MATCH
    - 文字字符串
  • \s+
    - 一个或多个空格
  • (\S+)
    - 第 1 组(替换模式中的
    $1
    ):任何一个或多个非空白字符
  • .*
    - 除了换行符之外的任何零个或多个字符,尽可能多。
© www.soinside.com 2019 - 2024. All rights reserved.