0

我想毫无例外地regsub,以免加倍我做regsub。

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

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

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

4

2 回答 2

2

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

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

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

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

您可能也应该\y在该 RE 中添加一些(单词边界约束),以便它不会更改defeateddeed

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

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

于 2021-07-23T13:11:50.877 回答
2

还要注意string map命令:

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

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

于 2021-07-23T13:52:51.217 回答