假设我有一个列表set a [list powerball gummy3 slash]我想做一个自动的正则表达式来查找其他类型的类似列表
set a [list powerball gummy3 slash]
set b [list notaaball gummy2 slosh] set c [list notlist notgummy notslash]
我想匹配列表B而不是c,因为它和a有相同数量的元素和相同数量的字符。我需要计算列表成员中的字符数,还是需要找到一些\S+正则表达式来匹配它?
zphenhs41#
这不是正则表达式的工作。正则表达式在计数方面 * 很糟糕 *。相反,使用llength和foreach和string length。并将其放在一个过程中:
llength
foreach
string length
proc listMatch {list1 list2} { if {[llength $list1] != [llength $list2]} { return false } foreach a $list1 b $list2 { if {[string length $a] != [string length $b]} { return false } } return true }
这样做的好处是可以处理您没有想到的边缘情况(例如带有嵌入空格的元素)。
1条答案
按热度按时间zphenhs41#
这不是正则表达式的工作。正则表达式在计数方面 * 很糟糕 *。相反,使用
llength
和foreach
和string length
。并将其放在一个过程中:这样做的好处是可以处理您没有想到的边缘情况(例如带有嵌入空格的元素)。