如何使用 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
就不会被删除。
我想删除字符串中的数字,但希望保留包含数字的单词。例如:
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
就不会被删除。