Если это ваш ввод, тогда на самом деле нет необходимости использовать регулярные выражения: просто убедитесь, что в этом списке есть указанное слово:
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, между ними также есть 1 или более YO или OY»:
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$}