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

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

{ GHI GII GJI GKI}

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

1 Ответ

3 голосов
/ 28 апреля 2010

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

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$}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...