как написать регулярное выражение, используя proc в TCL, чтобы справиться со следующим шаблоном?

Я новичок в TCL и ищу помощи, чтобы справиться со следующим выражением. Я получаю строку i/p от пользователя для проверки любой из этих строк ниже и никаких других в строке в CLI с использованием процедуры

{ GHI GII GJI GKI}

и еще одна сложная задача - написать регулярное выражение, чтобы оно соответствовало только символам, которые начинаются с алфавита A и заканчиваются на B, а также имеют 1 или более YO или OY между использованием процедуры. Спасибо


tcl
person Passion    schedule 28.04.2010    source источник
comment
Можете ли вы привести пример некоторых проходящих и не проходящих входных данных?   -  person RHSeeger    schedule 28.04.2010
comment
@RHSeeger IJK GHI MNO GII LOG GJI HLT GKI (ввод пользователя) Должен соответствовать шаблону строки с использованием регулярного выражения   -  person Passion    schedule 29.04.2010


Ответы (1)


Если это ваш ввод, то на самом деле нет необходимости использовать регулярные выражения: просто проверьте, есть ли указанное слово в этом списке:

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$}
person glenn jackman    schedule 28.04.2010
comment
@ Гленн Джекман Спасибо, Гленн. На самом деле, я должен представить как процедуру, получить эти строки от пользователя в качестве входных данных (CLI) ‹IJK GHI MNO GII LOG GJI HLT GKI› и сопоставить соответствующий шаблон строки с помощью одного регулярного выражения Пример: Pattern is Like IJK GHI MNO GII LOG GJI HLT GKI (User i/p @ CLI) Выходные совпадения: GHI GII GJI GKI (это фильтрация IJK MNO LOG HLT) - person Passion; 29.04.2010
comment
хм, начинает пахнуть домашней работой. Итак, учитывая CLI, вы должны сопоставить слова в списке, у которых либо C в качестве 1-го символа, либо L в качестве 2-го символа, либо I в качестве последнего символа, верно? - person glenn jackman; 29.04.2010
comment
Спасибо. Я нашел способ сделать это. - person Passion; 29.04.2010