regex 如何在tcl中执行自动正则表达式

5t7ly7z5  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(187)

假设我有一个列表
set a [list powerball gummy3 slash]
我想做一个自动的正则表达式来查找其他类型的类似列表

set b [list notaaball gummy2 slosh]
set c [list notlist notgummy notslash]

我想匹配列表B而不是c,因为它和a有相同数量的元素和相同数量的字符。
我需要计算列表成员中的字符数,还是需要找到一些\S+正则表达式来匹配它?

zphenhs4

zphenhs41#

这不是正则表达式的工作。正则表达式在计数方面 * 很糟糕 *。相反,使用llengthforeachstring 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
}

这样做的好处是可以处理您没有想到的边缘情况(例如带有嵌入空格的元素)。

相关问题