mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
merge revision(s) e2ec97c4b8
: [Backport #18415]
[DOC] How to get the longest last match [Bug #18415] --- string.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-)
This commit is contained in:
parent
3ce60f44b8
commit
4b1cee1431
2 changed files with 32 additions and 2 deletions
32
string.c
32
string.c
|
@ -3846,7 +3846,6 @@ rb_str_rindex(VALUE str, VALUE sub, long pos)
|
||||||
return str_rindex(str, sub, s, pos, enc);
|
return str_rindex(str, sub, s, pos, enc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* string.rindex(substring, offset = self.length) -> integer or nil
|
* string.rindex(substring, offset = self.length) -> integer or nil
|
||||||
|
@ -3866,6 +3865,23 @@ rb_str_rindex(VALUE str, VALUE sub, long pos)
|
||||||
* 'foo'.rindex(/oo/) # => 1
|
* 'foo'.rindex(/oo/) # => 1
|
||||||
* 'foo'.rindex(/ooo/) # => nil
|
* 'foo'.rindex(/ooo/) # => 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, needs to combine with negative
|
||||||
|
* lookbehind.
|
||||||
|
*
|
||||||
|
* 'foo'.rindex(/(?<!o)o+/) # => 1
|
||||||
|
* $~ #=> #<MatchData "oo">
|
||||||
|
*
|
||||||
|
* Or String#index with negative lookforward.
|
||||||
|
*
|
||||||
|
* 'foo'.index(/o+(?!.*o)/) # => 1
|
||||||
|
* $~ #=> #<MatchData "oo">
|
||||||
|
*
|
||||||
* \Integer argument +offset+, if given and non-negative, specifies the maximum starting position in the
|
* \Integer argument +offset+, if given and non-negative, specifies the maximum starting position in the
|
||||||
* string to _end_ the search:
|
* string to _end_ the search:
|
||||||
* 'foo'.rindex('o', 0) # => nil
|
* 'foo'.rindex('o', 0) # => nil
|
||||||
|
@ -10101,6 +10117,20 @@ rb_str_partition(VALUE str, VALUE sep)
|
||||||
* "hello".rpartition("l") #=> ["hel", "l", "o"]
|
* "hello".rpartition("l") #=> ["hel", "l", "o"]
|
||||||
* "hello".rpartition("x") #=> ["", "", "hello"]
|
* "hello".rpartition("x") #=> ["", "", "hello"]
|
||||||
* "hello".rpartition(/.l/) #=> ["he", "ll", "o"]
|
* "hello".rpartition(/.l/) #=> ["he", "ll", "o"]
|
||||||
|
*
|
||||||
|
* The match from the end means starting at the possible last position, not
|
||||||
|
* the last of longest matches.
|
||||||
|
*
|
||||||
|
* "hello".rpartition(/l+/) #=> ["hel", "l", "o"]
|
||||||
|
*
|
||||||
|
* To partition at the last longest match, needs to combine with
|
||||||
|
* negative lookbehind.
|
||||||
|
*
|
||||||
|
* "hello".rpartition(/(?<!l)l+/) #=> ["he", "ll", "o"]
|
||||||
|
*
|
||||||
|
* Or String#partition with negative lookforward.
|
||||||
|
*
|
||||||
|
* "hello".partition(/l+(?!.*l)/) #=> ["he", "ll", "o"]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
|
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
|
||||||
#define RUBY_VERSION_TEENY 4
|
#define RUBY_VERSION_TEENY 4
|
||||||
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
|
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
|
||||||
#define RUBY_PATCHLEVEL 183
|
#define RUBY_PATCHLEVEL 184
|
||||||
|
|
||||||
#define RUBY_RELEASE_YEAR 2022
|
#define RUBY_RELEASE_YEAR 2022
|
||||||
#define RUBY_RELEASE_MONTH 3
|
#define RUBY_RELEASE_MONTH 3
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue