【问题标题】:tcl regex inside string map字符串映射内的tcl正则表达式
【发布时间】:2014-09-17 23:23:48
【问题描述】:

我有一个模板,我想将其转换为 tex 文件。例如,每个章节和部分都包含一个点和一个字母,我想用反斜杠和字母替换它。我知道我可以尝试使用 regsub,但我真的很想尝试使用字符串映射,这是不起作用的代码:

set main \
{
.chapter{Assignment 1}
.section{1a}
}
set main [string map {.({^[A-Za-z]+$})\1 \\\1} $main]

这样做会更容易:

set main [string map {.c \\c} $main]
set main [string map {.s \\s} $main]

但我只是想尝试使用 {any letter thingy} 并了解是否可以使用 string map 命令。

【问题讨论】:

    标签: regex map tcl


    【解决方案1】:

    根据string map manual entry,此命令不采用正则表达式。字符串映射采用一个简单的字符串列表来匹配要替换的值。它有一个 -nocase 选项来启用与大小写无关的匹配,仅此而已。但是,您可以有多个对,例如:

    string map {.c \\c .s \\s} $value
    

    如果需要,您还可以使用普通的 Tcl 脚本来构建更复杂的对列表,因为该映射只是一个列表。如果您想或需要使用正则表达式,则必须使用 regsub。

    【讨论】:

      猜你喜欢
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      相关资源
      最近更新 更多