# $B%P%C%/%9%i%C%7%e$r4^$\`(Bsub/gsub$B$N5sF0(B

**URL:** <https://www.ruby-forum.com/t/b-p-c-9-i-c-7-e-r4-bsub-gsub-b-n5sf0-b/137796>\
**Category:** Development\
**Created:** [May 16, 2008, 1:39pm UTC](https://www.ruby-forum.com/t/b-p-c-9-i-c-7-e-r4-bsub-gsub-b-n5sf0-b/137796 "2008-05-16T13:39:17Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![keisuke\_fukuda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/8e8cbc/32.png) [@keisuke\_fukuda](https://www.ruby-forum.com/u/keisuke_fukuda)\
**Post date:** [May 16, 2008, 1:39pm UTC](https://www.ruby-forum.com/t/b-p-c-9-i-c-7-e-r4-bsub-gsub-b-n5sf0-b/137796/1 "2008-05-16T13:39:17Z")

</div>

e$B$O$8$a$^$7$F!#J!ED$H?=$7$^$9!#e(B

sub/gsube$B$N5sF0$G!“e(B  
'e$B!!”_!!e(B\’  
e$B$H$$$&CV49$r$7$h$&$H$7$?\>l9g$N5sF0$K$D$$$F$G$9!#2\<5-$NF0:n$O0U?^E_$J$b$N$G$7$g$&$+!)e(B  
’  
e$B!J%7%s%0%k%/%)!\<%H!K0J30$b!“5/$3$kJ8;z$H5/$3$i$J$$J8;z$,$”$k$h$&$G$9!#e(B  
e$BLVMeE\*$K;n$7$?$o$1$G$O$J$$$G$9$,!"e(B’&  
e$B$J$I$G$O5/$3$j!“e(B$#e$B$J$I$G$O5/$3$j$^$;$s!#e(B  
sub/gsub, 1.8/1.9e$B!”$NA4$F$G6&DL$N$h$&$G$9!#e(B

$ ./ruby -v  
ruby 1.9.0 (2008-05-16 revision 0) [i686-linux]

$ ./ruby  
p “a”.sub(/a/, “\a”)  
p “’”.sub(/’/, “\’”) # \<–e$B!)e(B  
p “‘foo’”.sub(/’/, “\’”) # \<-- ?  
p “‘foo’”.sub(/’/, “\’”) # \<-- ?

p “a”.sub(/a/) { |m| “\a” }  
p “’”.sub(/’/) { |m| “\’” } #  
e$B%V%m%C%/$N\>l9g$O0c$&5sF0e(B(e$B$3$A$i$,K\Mh!&!&!&e(B??e$B!Ke(B  
p “‘foo’”.sub(/’/) { |m| “\’” }  
p “‘foo’”.sub(/’/) { |m| “\’” }

==\>

“\a”  
“”  
“foo’foo’”  
“foo’foo’”  
“\a”  
“\’”  
“\‘foo’”  
“\‘foo’”

$ ./ruby -v  
ruby 1.8.7 (2008-05-16 patchlevel 5000) [i686-linux]

p “a”.sub(/a/, “\a”)  
p “’”.sub(/’/, “\’”)  
p “‘foo’”.sub(/’/, “\’”)  
p “‘foo’”.sub(/’/, “\’”)

p “a”.sub(/a/) { |m| “\a” }  
p “’”.sub(/’/) { |m| “\’” }  
p “‘foo’”.sub(/’/) { |m| “\’” }  
p “‘foo’”.sub(/’/) { |m| “\’” }

==\>

“\a”  
“”  
“foo’foo’”  
“foo’foo’”  
“\a”  
“\’”  
“\‘foo’”  
“\‘foo’”

---

<div class="post-metadata">

**Author:** ![keisuke\_fukuda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/8e8cbc/32.png) [@keisuke\_fukuda](https://www.ruby-forum.com/u/keisuke_fukuda)\
**Post date:** [May 16, 2008, 1:56pm UTC](https://www.ruby-forum.com/t/b-p-c-9-i-c-7-e-r4-bsub-gsub-b-n5sf0-b/137796/2 "2008-05-16T13:56:25Z")

</div>

keisuke fukuda e$B$5$s$O=q$-$^$7$?e(B:

> e$B$O$8$a$^$7$F!#J!ED$H?=$7$^$9!#e(B
> 
> sub/gsube$B$N5sF0$G!“e(B  
> 'e$B!!”_!!e(B\’  
> e$B$H$$$&CV49$r$7$h$&$H$7$?\>l9g$N5sF0$K$D$$$F$G$9!#2\<5-$NF0:n$O0U?^E_$J$b$N$G$7$g$&$+!)e(B

e$B$O$$!#e(B

---

<div class="post-metadata">

**Author:** ![keisuke\_fukuda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/8e8cbc/32.png) [@keisuke\_fukuda](https://www.ruby-forum.com/u/keisuke_fukuda)\
**Post date:** [May 16, 2008, 3:24pm UTC](https://www.ruby-forum.com/t/b-p-c-9-i-c-7-e-r4-bsub-gsub-b-n5sf0-b/137796/3 "2008-05-16T15:24:28Z")

</div>

e$BJ!ED$G$9!#e(B

e$B$k$S$-$A$5$s!“KNIt$5$s!”$"$j$,$H$&$4$6$$$^$7$?!#e(B  
e$B$b$C$H$h$/3NG’$7$F$+$iN.$9!Je(Bruby-liste$B$K!K$h$&$K$7$^$9!#e(B

e$B$\*A{$,$;$7$^$7$?!#e(B

---

<div class="post-metadata">

**Author:** ![keisuke\_fukuda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/8e8cbc/32.png) [@keisuke\_fukuda](https://www.ruby-forum.com/u/keisuke_fukuda)\
**Post date:** [May 16, 2008, 1:57pm UTC](https://www.ruby-forum.com/t/b-p-c-9-i-c-7-e-r4-bsub-gsub-b-n5sf0-b/137796/4 "2008-05-16T13:57:35Z")

</div>

From: “keisuke fukuda” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Subject: [ruby-dev:34727]  
e$B%P%C%/%9%i%C%7%e$r4^$`e(Bsub/gsube$B$N5sF0e(B  
Date: Fri, 16 May 2008 20:38:44 +0900

e$B$k$S$-$A$G$9!#e(B

# ruby-liste$B8~$-$+$J!#e(B

> sub/gsube$B$N5sF0$G!“e(B  
> 'e$B!!”_!!e(B\’  
> e$B$H$$$&CV49$r$7$h$&$H$7$?\>l9g$N5sF0$K$D$$$F$G$9!#2\<5-$NF0:n$O0U?^E_$J$b$N$G$7$g$&$+!)e(B  
> ’ e$B!J%7%s%0%k%/%)!\<%H!K0J30$b!“5/$3$kJ8;z$H5/$3$i$J$$J8;z$,$”$k$h$&$G$9!#e(B  
> e$BLVMeE\*$K;n$7$?$o$1$G$O$J$$$G$9$,!"e(B’& e$B$J$I$G$O5/$3$j!"e(B$#e$B$J$I$G$O5/$3$j$^$;$s!#e(B

e$B0U?^$7$?;EMM$G$9!#e(B

— gsub(pattern, replace) → String

e$BJ8;zNsCf$Ge(B pattern e$B$K%^%C%A$9$kItJ,A4$F$re(B  
e$BJ8;zNse(B replace e$B$GCV$-49$($?J8;zNs$r@8@.$7JV$7$^$9!#e(B

Ruby 1.6 e$B0JA0$G$Oe(B pattern e$B$,J8;zNs$N\>l9g!“e(B  
e$B$=$NJ8;zNs$r@55,I=8=$K%3%s%Q%$%k$7$F$$$^$7$?!#e(B  
e$B$7$+$7e(B Ruby 1.8  
e$B0J9\_$G$O!”$=$NJ8;zNs$=$N$b$N$,%Q%?!\<%s$K$J$j$^$9!#e(B

e$BCV49J8;zNse(B replace e$BCf$Ne(B & e$B$He(B \0  
e$B$O%^%C%A$7$?ItJ,J8;zNs$K!"e(B  
\1 … \9 e$B$Oe(B n e$BHVL$N3g8L$NFbMF$KCV$-49$($i$l$^$9!#e(B  
e$BCV49J8;zNsFb$G$Oe(B `e$B!"e(B'e$B!"e(B+ e$B$b;H$($^$9!#e(B  
e$B$3$l$i$Oe(B [[m:$`]]e$B!"e(B[[m:$']]e$B!"e(B[[m:$+]]  
e$B$KBP1~$7$^$9!#e(B

— $’

e$B8=:\_$N%9%3!\<%W$G:G8e$K@.8y$7$?@55,I=8=$N%Q%?!\<%s%^%C%A$G%^%C%A$7$?e(B  
e$BItJ,$h$j8e$m$NJ8;zNs$G$9!#e(B

e$B:G8e$N%^%C%A$,\<:GT$7$F$$$?\>l9g$K$Oe(B nile$B!#e(B

[[m:Regexp.last\_match]].post\_match e$B$HF1$8$G$9!#e(B

e$B$3$NJQ?t$O%m!\<%+%k%9%3!\<%W$+$D%9%l%C%I%m!\<%+%k$G$9!#e(B

================

# \*1

“‘foo’”.sub(/‘/, "\’") # =\> “foo’foo’”

# \*2

“‘foo’”.sub(/‘/, %q!'!) # =\> "foo’foo’"

# \*3

“‘foo’”.sub(/‘/) { |m| Regexp.last\_match.post\_match } # =\> "foo’foo’"

_1e$B$rEy2A$J$b$N$K=q$-49$($k$He(B_2e$B$K$J$j$^$9!#e(B  
e$B$G!"CV49J8;zNs$,!Ve(B'e$B!W$J$N$G8e$K%^%C%A$7$?J8;zNs!Ve(Bfoo’e$B!W$KCV$-49$o$k$N$G$9!#e(B  
e$B%V%m%C%/5-K!$K$9$k$He(B\*3e$B$H$bEy2A$G$9!#e(B
