Returns the integer position of the first substring that matches the given argument +pattern+, or +nil+ if none found. When +pattern+ is a string, returns the index of the first matching substring in +self+: 'foo'.index('f') # => 0 'foo'.index('o') # => 1 'foo'.index('oo') # => 1 'foo'.index('ooo') # => nil 'тест'.index('с') # => 2 # Characters, not bytes. 'こんにちは'.index('ち') # => 3 When +pattern+ is a Regexp, returns the index of the first match in +self+: 'foo'.index(/o./) # => 1 'foo'.index(/.o/) # => 0 When +offset+ is non-negative, begins the search at position +offset+; the returned index is relative to the beginning of +self+: 'bar'.index('r', 0) # => 2 'bar'.index('r', 1) # => 2 'bar'.index('r', 2) # => 2 'bar'.index('r', 3) # => nil 'bar'.index(/[r-z]/, 0) # => 2 'тест'.index('с', 1) # => 2 'тест'.index('с', 2) # => 2 'тест'.index('с', 3) # => nil # Offset in characters, not bytes. 'こんにちは'.index('ち', 2) # => 3 With negative integer argument +offset+, selects the search position by counting backward from the end of +self+: 'foo'.index('o', -1) # => 2 'foo'.index('o', -2) # => 1 'foo'.index('o', -3) # => 1 'foo'.index('o', -4) # => nil 'foo'.index(/o./, -2) # => 1 'foo'.index(/.o/, -2) # => 1 Related: see {Querying}[rdoc-ref:String@Querying].