Returns the integer position of the _last_ substring that matches the given argument +pattern+, or +nil+ if none found. When +pattern+ is a string, returns the index of the last matching substring in self: 'foo'.rindex('f') # => 0 'foo'.rindex('o') # => 2 'foo'.rindex('oo' # => 1 'foo'.rindex('ooo') # => nil 'тест'.rindex('т') # => 3 'こんにちは'.rindex('ち') # => 3 When +pattern+ is a Regexp, returns the index of the last match in self: 'foo'.rindex(/f/) # => 0 'foo'.rindex(/o/) # => 2 'foo'.rindex(/oo/) # => 1 'foo'.rindex(/ooo/) # => nil When +offset+ is non-negative, it specifies the maximum starting position in the string to end the search: 'foo'.rindex('o', 0) # => nil 'foo'.rindex('o', 1) # => 1 'foo'.rindex('o', 2) # => 2 'foo'.rindex('o', 3) # => 2 With negative integer argument +offset+, selects the search position by counting backward from the end of +self+: 'foo'.rindex('o', -1) # => 2 'foo'.rindex('o', -2) # => 1 'foo'.rindex('o', -3) # => nil 'foo'.rindex('o', -4) # => nil The last match means starting at the possible last position, not the last of longest matches: 'foo'.rindex(/o+/) # => 2 $~ # => # To get the last longest match, combine with negative lookbehind: 'foo'.rindex(/(? 1 $~ # => # Or String#index with negative lookforward. 'foo'.index(/o+(?!.*o)/) # => 1 $~ # => # Related: see {Querying}[rdoc-ref:String@Querying].