TYPOSCRIPT:仅限文本字段中的 stdWrap.replacement

问题描述

我通常通过 stdWrap 搜索并替换为德语引号。

lib content {
    20 < styles.content.get
    20.select.where = colPos = 0
    stdWrap.replacement{
         20 {
            search = #(&quot;)#
            replace = |*| &bdquo;||&ldquo; |*|
            useRegExp = 1
            uSEOptionSplitReplace = 1
        }
    }
}

从来没有问题,但现在我想将 CO2 替换为 CO2。但是:文件和图像的名称中也包含 CO2。此搜索和替换还会替换路径名和文件名中的字符串。

有谁知道如何将 stdWrap 功能限制为仅文本字段(文本、标题标题)或排除特定字段(图像、文件)?

感谢您的帮助:)

马丁

解决方法

您可以使用带有前瞻的正则表达式:

lib.content {
  20 < styles.content.get
  20.select.where = colPos = 0
  stdWrap.replacement{
    20 {
      search = #(?![^<>]*>)(co2)#i
      replace = CO<sub>2</sub>
      useRegExp = 1
    }
  }
}

(?![^<>]*>) 将确保 之间的任何文本不会被替换。

,

仅替换文本(来自例如 bodytext)将非常复杂,并且可能只能在该特定字段的输出(打字稿或 FLUID)上完成。
但是,如果文本包含指向文件名中包含 CO2 的文件的链接怎么办?.
几乎不可能被抓住。

您可以尝试使用正则表达式仅捕获单词(受空格或标点符号限制,文件名中不使用)。

更好的解决方案意味着编辑需要更多的工作:
不要只替换 CO2,而是让它像 __CO2__##CO2## 一样独一无二。
虽然这个字符序列也可能出现在文件名中,但它的概率远低于 CO2