字符串匹配
字符串匹配命令使用格式如下: string match -nocase pattern str -nocase 表示不区分大小写匹配; pattern 表示匹配方式,通常由字符和通配符组成。 如果匹配成功,string match 的返回值为 1,否则为 0。
使用 * 匹配匹配符 * 可以匹配 0 或多个字符,示例如下:
Vivado% puts [string match {name*tom} "name is tom"]
1
Vivado% puts [string match {name*tom} "name is tom,and age is 23"]
0
使用 ? 匹配
匹配符 ? 只能匹配一个字符,示例如下:
Vivado% puts [string match {name?tom} "name is tom"]
0
Vivado% puts [string match {name????tom} "name is tom"]
1
使用 [] 匹配
可以在匹配符 [] 内指定多个字符,并进行单个字符是否存在于 [] 内的匹配。
Vivado% puts [string match -nocase {name[ijk]tom} "name is tom"]
0
Vivado% puts [string match -nocase {name[ijk]tom} "nameitom"]
1
Vivado% puts [string match {name[ijk]tom} "nameItom"]
0
也可以在 [] 内指定字母或数字范围,且可以使用多次 [] 进行匹配,表示匹配多个字符:
Vivado% puts [string match {[a-x]*} "a12"]
1
Vivado% puts [string match {[a-x][0-9]*} "a12"]
1
Vivado% puts [string match {[a-x0-9]*} "312"]
1
[0-9a-z] 表示匹配一个字符,第一个字符匹配一个数字或字母都可以。 [0-9][a-z] 表示匹配两个字符,第一个字符必须匹配数字,第二个字符必须匹配字母。
使用 \ 匹配可以使用反斜杠,对相关字符进行转义,完成特殊字符的匹配。
Vivado% puts [string match {*\[*\]*} "a[3]"]
1
Vivado% puts [string match {*\[[0-9]\]} "a[3]"]
1
参考文章链接