I've got a routine that works fine at building an array of upper-case
strings extracted from a string:

aNewList = []
s = StringScanner.new sNewList
upper = /[A-Z]+/
not_upper= Regexp.new(  upper.source.sub( /\[/, '[^' )  )
while not s.eos?
  case
     when s.skip(upper); aNewList << s.matched
     else s.skip(not_upper)
  end
end

But the not_upper Regexp definition is really a kludge.  It somewhat
camouflages what is really /[^A-Z]+/

I'd like to DRY it by expressing it as something like !upper.  I need
something like !~ we use normally with string searches.

Any ideas?
--
Richard