2016-06-01 2 views
0

При использовании Tcl, как указано в документации here, не следует следующий код,Как работает globbing в Tcl?

string match h* match 

, возвращение для согласованного ч персонажа в «матче» вместо того, что он на самом деле возвращается, то есть ?

+2

Поскольку вы не указали * подстановочный символ * для шаблона glob, ваша строка должна начинаться с символа «h». –

ответ

2

В самом вас есть следующее содержание той же странице,

# Matches 
string match f* foo 

# Matches 
string match f?? foo 

# Doesn't match 
string match f foo 

Матч применяется, как будто целое слово, а не как строка содержит это конкретное слово.

С помощью string match h* match он попытается сопоставить шаблон, первая буква которого равна h, и дополнительно содержит ноль или более символов любой строки символов, что неверно для слова match.

Вместо этого вы можете положиться на regexp за то, что вы ожидаете.

# Matches, will return 1 
regexp h* match 
+0

Это 'regexp' отвечает на другой вопрос и будет соответствовать строке _any_ вообще. Ну, если строка содержит ноль или более символов 'h', но это каждая строка когда-либо ... –

+0

Согласен. Один запрос здесь. 'regexp -inline h * match' возвращает пустую строку. Кроме того, 'regexp -inline h? результат совпадения дает тот же результат. Это нормально. В обоих случаях это соответствует нулевому появлению буквы 'h'. '*' должен быть жадным и почему он не соответствует одному вхождению 'h'? – Dinesh

Смежные вопросы