From: seijin@... Date: 2007-07-25T01:50:01+09:00 Subject: Regex Question I recently started studying Ruby (1.8.6) and things are going well. However, something bothered me when I got to the regular expression section. This is my first time deal with regular expressions directly so I'm completely new to things. I understand the idea behind regular expressions and most of the usage but two of them stuck out for me. I'm studying the 2nd edition Pragmatic book and using their show_regexp method... def show_regexp(a, re) if a =~ re "#{$`}<<#{$&}>>#{$'}" else "no match" end end ...hopefully I don't get in trouble posting that method here. So here are my two problems... First, why does ... show_regexp("banana", /(an)*/) ... not match "anan" ? I thought it was a greedy algorithm that tried to match as much as possible? Second, how does ... show_regexp("Mississippi", /(\w+)\1/) ... work? Why in the world does it match "ississ" rather than returning no match? I think most of my problem with this one is not understanding the underlying logic used when doing pattern matching with back references. Does it go through and check "Mississippi", "Mississipp" down to "M" and then "i", "is", "iss", etc? Like trying all possible combinations in a lock? I would be extremely grateful if someone would do a short step-by-step of how it matches "ississ". I understand what the "\1" does, I just don't understand how the first part even gets to the first "iss". Thanks a lot!