Thus spoke Jorge Godoy (on 2006-09-30 19:04): > Mirco Wahab <[EMAIL PROTECTED]> writes: >> sub print_message { >> if (/^track="(.+?)"/ ){ print "Your track is $1\n" } >> ... > > Specially the non-greedy part. :-) I don't believe that non-greedyness would > be adequate here since I believe he's willing to process the whole line.
Ohh, but I think it really is, my intention was to get the quotet text out of the quotes, if there is any, eg.: sub print_message { if (/^track="(.+?)"/ ){ print "Your track is $1\n" } ... } print_message for 'track="My favorite track"', 'title="My favorite song"', 'artist="Those Dudes"', 'Something else' ; (... our quoting chars are just inverted.) > $line = "track='My favorite track'"; > if ($line =~ /^track=(.+?)/) { print "My track is $1\n"}; > > outputs > My track is ' Of course, you can't have the nongreedy thing without a following item, in the case mentioned, a second \" (which would have been consumed in the 'greedy' mode). > and what I'd use > > $line = "track='My favorite track'"; > if ($line =~ /^track=(.*)/) { print "My track is $1\n"}; OK, but to pull the quoted text alone, you'd need the non-greedy thing, as in ... if ( /^track='(.+?)'/ ){ print "Your track is $1\n" } ... Alternatively, you could use the negated character class for that: if ( /^track='([^']+)/ ){ print "Your track is $1\n" } which has exactly the same character count (so taste matters here) ... Regards Mirco -- http://mail.python.org/mailman/listinfo/python-list