Tcl 在expect脚本中,如何从字符串变量中删除一组特殊字符?

Tcl 在expect脚本中,如何从字符串变量中删除一组特殊字符?,tcl,expect,Tcl,Expect,假设我有一个变量,它被设置为某个用户输入。我无法控制用户将输入的内容 如何删除[A-Za-z0-9]、空格、句点或逗号以外的所有字符 proc getUserInput {} { set timeout 60 send_user "\nEnter user input: " expect_user { -re "(.*)\n" { set userInput $expect_out(1,string) }

假设我有一个变量,它被设置为某个用户输入。我无法控制用户将输入的内容

如何删除[A-Za-z0-9]、空格、句点或逗号以外的所有字符

proc getUserInput {} {
    set timeout 60
    send_user "\nEnter user input: "
    expect_user {
        -re "(.*)\n" {
            set userInput $expect_out(1,string)
        }
        timeout {
            exitTimeout "Timed out waiting for user input!"
        }
    }
    return $userInput
}

set rawValue [ getUserInput ]
// massage variable goes here?
set massagedValue "$rawValue"
不确定这是否重要,但我使用的是expect 5.45

$ expect -v
expect version 5.45

Expect
是一个
Tcl
扩展,因此您可以在编写
Expect
脚本时使用所有
Tcl
命令。您可以在
tclsh
中尝试:

%set v1“####字符串##”
###弦###
%设置v2[regsub-all{[^.,[:alnum:]}$v1”“]
弦
%