logo       

[ruby-list:42112] Re: [Q] perl の m//g に相当する処理を ruby で行ないたい: msg#00143

lang.ruby.japanese

Subject: [ruby-list:42112] Re: [Q] perl の m//g に相当する処理を ruby で行ないたい

木村です。

On Tue, 25 Apr 2006 12:57:35 +0900
"ITSUMI ken-ichi" <itsumi.ml-Re5JQEeQqe8AvxtiuMwx3w@xxxxxxxxxxxxxxxx> wrote:

> ruby勉強中の 逸見と申します。
>
> perl でいうところの m//g で行なう処理を ruby ではどう書くのかリファレンスマニュアル
> を精読しても判らなかったので、質問させていただきます。

scanを使えばよろしいかと。
#Stringクラスにあります。

irb(main):001:0> "foo,bar,baz".scan(/\w+/)
=> ["foo", "bar", "baz"]

このように配列で返ってきます。
ブロックを与えてそこで処理することも可能です。

> content = urllib.urlopen(sys.argv[1]).read()
> pattern=re.compile("<form.*?>"
> + "|</form>"
> + "|<input.*?/>"
> + "|<input.*?>"
> + "|<textarea.*?</textarea>"
> + "|<select.*?</select>"
> ,re.IGNORECASE|re.DOTALL)

re.DOTALL と同じことをさせるのは m修飾子(オプション)もしくは
Regexp#MULTILINEで、re.IGNORECASE は i修飾子か Regexp#IGNORECASE
ですから、

Regex.new("パターンをここに", Regex#MULTILIE | Regex.IGNORECSE)
で作るなどすればよいでしょう。

あと、空白の扱いに注意する必要はありますが、EXTENDEDフラグを
つけると見やすくできるかも。

--
木村浩一





<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise