From: Donal K. F. <don...@ma...> - 2010-07-28 15:23:16
|
On 28/07/2010 16:15, Suhas R Bharadwaj wrote: > *% regexp {:*} "DHCP:Enabled" sec > 1 > % puts $sec > --> Nothing is stored in variable second* > > Why is ":" stored for the FIRST one and not the SECOND? This isn't the right list for such questions; the comp.lang.tcl newsgroup is the right venue, or you could ask on StackOverflow. However, the answer is that it matches the empty string so that it can match that empty string at the start of "DHCP:Enabled". The regular expression engine like to match things up as soon as possible. To show: % regexp -inline {:*} "DHCP:Enabled" {} % regexp -inline -all {:*} "DHCP:Enabled" {} {} {} {} : {} {} {} {} {} {} {} % regexp -inline -indices -all {:*} "DHCP:Enabled" {0 -1} {1 0} {2 1} {3 2} {4 4} {5 4} {6 5} {7 6} {8 7} {9 8} {10 9} {11 10} The -inline option is useful for simple testing, the -all matches in every matchable location instead of just the first, and the -indices returns locations rather than the string. Donal. |