logo       

[ruby-list:42115] Re: [Q]式中の改行と演算子位置 Was: [Q] perl の m//g に相当する処理を ruby : msg#00146

lang.ruby.japanese

Subject: [ruby-list:42115] Re: [Q]式中の改行と演算子位置 Was: [Q] perl の m//g に相当する処理を ruby で行ないたい

木村です。

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

> # -*- coding:euc-japan-unix; mode:ruby -*-
>
> $KCODE="e" # EUC
>
> require 'open-uri'
>
> content = URI.parse(URI.escape(ARGV[0])).read
> #print content
>
> pattern = Regexp.compile("<form.*?>" +
> "|</form>"+
> "|<input.*?/>"+
> "|<input.*?>"+
> "|<textarea.*?</textarea>"+
> "|<select.*?</select>",
> Regexp::IGNORECASE |
> Regexp::MULTILINE # perlの //s がRubyではこうなる
> )

ここでのパターン生成ですが、

Regexp.compile("<form.*?>
|</form>
|<input.*/>
|<input.*?
|<textarea.*?</textarea>
|<select.*?</select>",
Regexp::IGNORECASE | Regexp::MULTILINE |
Regexp::EXTENDED)

のように書くことができます(EXTENDEDフラグがポイント)。

このフラグをつけると、与えた正規表現中の空白文字類が無視されます
(空白を陽に指定したいときはエスケープするなどする)。

Pythonでも、"""(もしくは''')とre.VERBOSE(もしくは re.X)を組み合わせて
同じことができます。コメントも入れやすくなるので、複雑な正規表現を
少しでもわかりやすく記述するには良いかもしれません。

参考までに。

--
木村浩一





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

News | FAQ | advertise