: '''string match''' ''?'''''-nocase'''''? pattern string'' See if ''pattern'' matches ''string''; return 1 if it does, 0 if it doesn't. If '''-nocase''' is specified, then the pattern attempts to match against the string in a case insensitive manner. Compare '''[string equal]''' which compares entire strings or parts of strings but NOT expressions. For the two strings to match, their contents must be identical except that the following special sequences may appear in ''pattern'': * '''*''' Matches any sequence of characters in ''string'', including a null string. * '''?''' Matches any single character in ''string''. * '''[['''''chars''''']]''' Matches any character in the set given by ''chars''. If a sequence of the form ''x-y'' appears in ''chars'', then any character between ''x'' and ''y'', inclusive, will match. When used with '''-nocase''', the end points of the range are converted to lower case first. Whereas {[[A-z]]} matches '_' when matching case-sensitively ('_' falls between the 'Z' and 'a'), with '''-nocase''' this is considered like {[[A-Za-z]]} (and probably what was meant in the first place). * '''\'''''x'' Matches the single character ''x''. This provides a way of avoiding the special interpretation of the characters '''*?[[]]\''' in ''pattern''. <> [LV] Does '''string match''' use the same code as [glob] for this? No. ---- ====== set hin [open "/tmp/sample.txt" "r"] set data [read $hin] close $hin if [ string match -nocase "*test*" $data ] { puts "Found test" } else { puts "Did not find test" } ====== <> ---- **See also** * [glob] * [string] ---- !!!!!! %| [Tcl syntax help] | [Category Command] | [Category String Processing] |% !!!!!!