Значение регулярного выражения в TCL / EXPECT - PullRequest
2 голосов
/ 24 августа 2011

Я прочитал тестовый скрипт tcl, он использует EXPECT. часть кода:

expect ".*hello.*yes.*morning.*"

Подстановочный знак "*" соответствует всему, но как насчет "." перед ней? что это значит? какой шаблон хотел быть сопоставленным?

Ответы [ 3 ]

6 голосов
/ 24 августа 2011

Обратите внимание, что стиль соответствия по умолчанию для команды expect - -glob, поэтому эти точки фактически являются буквальными точками.Справку по сопоставлению в стиле глобуса можно найти в документации string match.

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

expect -re ".*hello.*yes.*morning.*"
3 голосов
/ 24 августа 2011

* не является подстановочным знаком в регулярных выражениях,.есть, * после.означает 0 или более вхождений предыдущего символа / класса символов.Так что здесь это означает: 0 или более вхождений любого знака.Также обратите внимание, что в зависимости от параметров регулярных выражений.часто не включает переводы строк.

1 голос
/ 24 августа 2011

* не является подстановочным знаком в регулярных выражениях.Вы думаете об операциях оболочки с подстановочными знаками имени файла, но это , а не , как * работает в регулярных выражениях.Абсолютно разные животные.В вашем регулярном выражении это ., который соответствует любому символу, затем *, который говорит 'соответствует 0 или более из предыдущего символа.

Вот некоторая информация о регулярных выражениях: http://www.regular -выражения.info / tutorial.html

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

http://docstore.mik.ua/orelly/unix3/upt/ch32_02.htm

...