mirror of
https://github.com/ruby/ruby.git
synced 2026-01-26 20:19:19 +00:00
53 lines
1.6 KiB
Plaintext
53 lines
1.6 KiB
Plaintext
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
|
|
$~ # => #<MatchData "o">
|
|
|
|
To get the last longest match, combine with negative lookbehind:
|
|
|
|
'foo'.rindex(/(?<!o)o+/) # => 1
|
|
$~ # => #<MatchData "oo">
|
|
|
|
Or String#index with negative lookforward.
|
|
|
|
'foo'.index(/o+(?!.*o)/) # => 1
|
|
$~ # => #<MatchData "oo">
|
|
|
|
Related: see {Querying}[rdoc-ref:String@Querying].
|