From: Roger Lipscombe Date: 2001-07-27T20:30:29+09:00 Subject: [ruby-talk:18622] Regex problems I'm trying to do some regex replacement in strings: def assertStringsEqual(actual, expected) if not (actual == expected) raise "Assertion failed: actual: '" + actual + "', expected: '" + expected + "'" end end # Match things in MixedCase def substituteRegex(string) re = /\b([A-Z][a-z]+){2,}\b/ string.gsub(re) { "prolog:" + $1 + ":middle:" + $1 + ":epilog" } end assertStringsEqual(substituteRegex("ThisShouldWork"), "prolog:ThisShouldWork:middle:ThisShouldWork:epilog") assertStringsEqual(substituteRegex("THISSHOULDNOTWORK"), "THISSHOULDNOTWORK") And it's not working. I get the following: ./test.rb:301:in `assertStringsEqual': Assertion failed: actual: 'prolog:Work:middle:Work:epilog', expected: 'prolog:ThisShouldWork:middle:ThisShouldWork:epilog' (RuntimeError) Essentially, the {2,} doesn't seem to be working, and it's grabbing the last piece that matches. Ideas? Cheers, Roger.