A-A+
TCL中的字符串匹配命令string match
在TCL中可以使用命令stringmatch进行字符串的匹配,命令格式如下:
string match ?-nocase? pattern string
如果pattern与string匹配则返回1,否则返回0.如果指定了-nocase选项则不区分大小写,否则在匹配时区分大小写。在进行字符串匹配时可以使用如下通配符:
* 可以与零个或多个任意字符组成的字符串匹配;
? 可以与一个任意字符匹配;
[chars] 与chars中的任意一个字符匹配,如果chars的内容包括范围表达式a-b,那么a到b之间的任意个字符都可以匹配,包括a和b;
\x 与单个字符x匹配,可以用于指定会被特殊处理的字符,如*?[]\.
示例:
string match a* alpha
→1
string match a* bat
→0
string match {[ab]*} brown
→1
string match a* Arizona
→0
string match -nocase a* Arizona
→1
string match {*\?} "Wow! "
→0
string match {*\?} "What? "
→1
通配符样式的模式可以完成很多简单的任务。例如,*.[ch]就可以用来匹配所有以.c或.h结尾的字符串。然而,更复杂的匹配模式无法由通配符样式完成。例如,无法由通配符样式的模式检测一个字符串是否包含了所有的数字:模式[1-9]只能与单个数字匹配,却不能指明多个数字用于匹配。更复杂的匹配模式需要使用正则表达式。