我想从 tcl 中的字符串中删除特定模式
I wanted to remove particular pattern from a string in tcl
hreset_error_status_t2_reg1
htrans_flag_t1_reg2
hsize_flag_error_reg
check_hwdata_reg
我必须使用正则表达式编写 Tcl 脚本我必须删除 error_status、flag、flag_error,并检查 在以下字符串中。它必须在文件中搜索以下关键字,并且必须删除字符串中提到的关键字。
要从字符串中删除所有这些模式,请使用 regsub -all
。如果您不需要使用正则表达式的强大功能,那么 string map
也可以。
set my_str "hreset_error_status_t2_reg1 htrans_flag_t1_reg2 hsize_flag_error_reg check_hwdata_reg"
set my_regex {error_status_|flag_(error_)?|check_}
regsub -all $my_regex $my_str ""
--> hreset_t2_reg1 htrans_t1_reg2 hsize_reg hwdata_reg
或
set my_map {
error_status_ ""
flag_error_ ""
flag_ ""
check_ ""
}
string map $my_map $my_str
--> hreset_t2_reg1 htrans_t1_reg2 hsize_reg hwdata_reg
请注意,我在 $my_map
中将 flag_error_
放在 flag_
之前,这样只有 flag_error
中的 flag_
个字符没有被删除。
hreset_error_status_t2_reg1 htrans_flag_t1_reg2 hsize_flag_error_reg check_hwdata_reg
我必须使用正则表达式编写 Tcl 脚本我必须删除 error_status、flag、flag_error,并检查 在以下字符串中。它必须在文件中搜索以下关键字,并且必须删除字符串中提到的关键字。
要从字符串中删除所有这些模式,请使用 regsub -all
。如果您不需要使用正则表达式的强大功能,那么 string map
也可以。
set my_str "hreset_error_status_t2_reg1 htrans_flag_t1_reg2 hsize_flag_error_reg check_hwdata_reg"
set my_regex {error_status_|flag_(error_)?|check_}
regsub -all $my_regex $my_str ""
--> hreset_t2_reg1 htrans_t1_reg2 hsize_reg hwdata_reg
或
set my_map {
error_status_ ""
flag_error_ ""
flag_ ""
check_ ""
}
string map $my_map $my_str
--> hreset_t2_reg1 htrans_t1_reg2 hsize_reg hwdata_reg
请注意,我在 $my_map
中将 flag_error_
放在 flag_
之前,这样只有 flag_error
中的 flag_
个字符没有被删除。