如何在tcl regsub中无一例外地制作大写和小写字母?

How to make without exception uppercase and lowercase letters in tcl regsub?

我要无一例外地regsub,以免加倍我做一个regsub。

之前的例子:
regsub -all "feat" $songtitle "" songtitle
regsub -all "Feat" $songtitle "" songtitle

我想要一个简单的 regsub 行:
regsub -all "feat" $songtitle "" songtitle

如果要regsub的词很多的话有点不方便,我希望regsub简单一点,没有例外,每个词只有一行regsub,而不是大写和两行小写字母。谢谢

您可以为 regsub 指定 -nocase 选项,使其在匹配时忽略大小写。

regsub -all -nocase {feat} $songtitle "" songtitle

您还可以通过将 (?i) 标记放在回复的开头来启用该操作模式:

regsub -all {(?i)feat} $songtitle "" songtitle

你可能也应该在那个 RE 中加入一些 \y(一个单词边界约束),这样它就不会把 defeated 变成 deed:

regsub -all {(?i)\yfeat\y} $songtitle "" songtitle

(一旦你向 RE 添加反斜杠或方括号,在 Tcl 中将 RE 放在花括号中是非常重要的。否则你最终会使用大量反斜杠......)

还要注意 string map 命令:

string map {feat "" Feat ""} $songtitle

当您实际上不需要正则表达式时很有用。