diff --git a/ChangeLog b/ChangeLog index 288149553a..822e18d892 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Fri Jan 8 22:30:06 2016 Akinori MUSHA + + * doc/regexp.rdoc: [DOC] Elaborate on the \G anchor. [ci skip] + Fri Jan 8 19:49:27 2016 Koichi Sasada * gc.c: remove heap_page::body. Instead of this field, diff --git a/doc/regexp.rdoc b/doc/regexp.rdoc index 02a5f300ee..4722f2e7f5 100644 --- a/doc/regexp.rdoc +++ b/doc/regexp.rdoc @@ -470,7 +470,19 @@ characters, anchoring the match to a specific position. * \Z - Matches end of string. If string ends with a newline, it matches just before newline * \z - Matches end of string -* \G - Matches point where last match finished +* \G - Matches first matching position: + + In methods like String#gsub and String#scan, it changes on each iteration. + It initially matches the beginning of subject, and in each following iteration it matches where the last match finished. + + " a b c".gsub(/ /, '_') #=> "____a_b_c" + " a b c".gsub(/\G /, '_') #=> "____a b c" + + In methods like Regexp#match and String#match that take an (optional) offset, it matches where the search begins. + + "hello, world".match(/,/, 3) #=> # + "hello, world".match(/\G,/, 3) #=> nil + * \b - Matches word boundaries when outside brackets; backspace (0x08) when inside brackets * \B - Matches non-word boundaries