如何使用 regsub 在 Tcl 中删除字符串中的数字?

How to remove numbers in a string in Tcl using regsub?

我想删除字符串中的数字,但希望保留包含数字的单词。例如:

set a "t0day 1s a 234 5unny d4y 123"

预期输出:

t0day 1s a 5unny d4y

我试过如下,但还是不行:

regsub -all {[^0-9]} $a " " a

您想在这些正则表达式中放入 word-boundary anchors

regsub -all {\y[0-9]+\y} $a " " a

在某些情况下,这会给你留下一个三元组 space(这对你来说可能重要也可能不重要,但清理起来很简单)但它不会在单词中间进行替换。

您的正则表达式并没有真正按照您的想法行事。 [^0-9] 匹配除了数字以外的所有内容,所以会发生的是所有内容都将被删除并遗漏数字。您可能想要做的是:

regsub -all {\y[0-9]+\y} $a "" a

这将从字符串中删除单独的数字。不过你会有一些尾随空格,为此你可以使用:

set a [string trim $a]

注册后。

\y确保数字前后没有单词字符,这样t0day中的0就不会被删除。