### Ruby 1.8.7 ###
require 'rubygems'
require 'oniguruma' # for look-behind
Oniguruma::ORegexp.new('h(?=\w*)')
# => /h(?=\w*)/
Oniguruma::ORegexp.new('(?<=\w*)o')
# => ArgumentError: Oniguruma Error: invalid pattern in look-behind
Oniguruma::ORegexp.new('(?<=\w)o')
# => /(?<=\w)o/
### Ruby 1.9.2 rc-2 ###
"hello".match(/h(?=\w*)/)
# => #<MatchData "h">
"hello".match(/(?<=\w*)o/)
# => SyntaxError: (irb):3: invalid pattern in look-behind: /(?<=\w*)o/
"hello".match(/(?<=\w)o/)
# => #<MatchData "o">
I can’t using quantifiers with look-behind?
The issue is that Ruby doesn’t support variable-length lookbehinds. Quantifiers aren’t out per se, but they can’t cause the length of the lookbehind to be nondeterministic.
Perl has the same restriction, as does just about every major language featuring regexes.
Try using the straightforward match
(\w*)\W*?oinstead of the lookbehind.