Article View: pl.comp.lang.ruby
Article #305Re: Jak zamienic regexpem znak na backslash i ten sam znak
From: Jaroslaw Zabiello
Date: Mon, 20 Nov 2006 13:47
Date: Mon, 20 Nov 2006 13:47
32 lines
1767 bytes
1767 bytes
Dnia Mon, 20 Nov 2006 13:59:14 +0100, Maciej Pilichowski napisał(a):
>>return filename.gsub(/([;!&%$' ])/,'\\\1')
>
> Jak sie okazalo nie 3 \ ale ... 5 \ Tylko nie wiem jakie jest sensowne
> uzasadnienie. RubyCentral podaje, ze tak ma byc i koniec, ale nie
> przekonuje mnie taka argumentacja.
Masz rację. To wygląda ewidentnie na błąd w Ruby, bo w Pythonie jest OK
>>> import re
>>> for f in ['pl;ik', 'pl ik', 'pl!ik']:
... print re.sub(r"([;!&%$' ])", r'\\\1', f)
...
pl\;ik
pl\ ik
pl\!ik
Zamiast mnożyć backslashe możesz też użyć Regexp#escape, ale to tylko
monkey patching.
for f in ['pl;ik', 'pl ik', 'pl!ik']
puts f.gsub(/([;!&%$' ])/, '\\\\'+'\1')
#puts f.gsub(/([;!&%$' ])/,Regexp.escape('\\')+'\1') # tak też można
end
pl\;ik
pl\ ik
pl\!ik
--
Jarosław Zabiełło
http://blog.zabiello.com
Technical Details
Message-ID:
<1f7nq1sloh3rw$.1fl69zy0j9ab5.dlg@40tude.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<82gul25dgfl84i5purg7odeviae9t6ijje@4ax.com> <ejptmj$36g$1@news.task.gda.pl> <ejrp5b$hd5$1@news.task.gda.pl> <ri93m2d4rrb8n3gfg1e9hrbgmj4c4g4gd5@4ax.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: Jaroslaw Zabiello <hipertracker@gmail.com> Newsgroups: pl.comp.lang.ruby Subject: Re: Jak zamienic regexpem znak na backslash i ten sam znak Date: Mon, 20 Nov 2006 13:47:30 +0000 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 32 Message-ID: <1f7nq1sloh3rw$.1fl69zy0j9ab5.dlg@40tude.net> References: <82gul25dgfl84i5purg7odeviae9t6ijje@4ax.com> <ejptmj$36g$1@news.task.gda.pl> <ejrp5b$hd5$1@news.task.gda.pl> <ri93m2d4rrb8n3gfg1e9hrbgmj4c4g4gd5@4ax.com> NNTP-Posting-Host: 82.195.148.233 Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1164030488 4089 82.195.148.233 (20 Nov 2006 13:48:08 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Mon, 20 Nov 2006 13:48:08 +0000 (UTC) X-User: newsgate2006 User-Agent: 40tude_Dialog/2.0.15.1pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit