如何在TCL中使用proc编写正则表达式来处理以下模式?

时间:2010-04-28 11:51:41

标签: tcl

我是TCL的新手并寻求帮助来处理以下表达式。 我从用户那里获得了i / p字符串,以验证以下任何字符串& CLI中没有其他人使用过程

{ GHI GII GJI GKI}

另一个棘手的问题是写regexp以匹配以字母A和A开头的字符。以B结束,在使用程序之间也有1个或更多的YO或OY。 谢谢

1 个答案:

答案 0 :(得分:3)

如果那是你的输入,那么真的没有必要使用正则表达式:只需检查提供的单词是否在该列表中:

set input { GHI GII GJI GKI}
foreach word {GJI GLI} {
    if {$word in $input} {
        puts "$word is in [list $input]"
    } else {
        puts "$word is not in [list $input]"
    }
}

匹配“以字母A开头并以B结尾,也包含YO或OY中的1个或多个”的正则表达式:

set re {^A(?:YO|OY)+B$}
foreach word {AYOB AYOOYB AYYB} {
    if {[regexp $re $word]} {
        puts "$word matches"
    } else {
        puts "$word does not match"
    }
}

如果你的意思是“(1个或更多的YO)或(1个或更多的OY),那么正则表达式是

set re {^A(?:(?:YO)+|(?:OY)+)B$}