|
[ruby-list:42113] [Q]式中の改行と演算子位置 Was: [Q] perl の m//g に相当する処理を ruby で行ない: msg#00144lang.ruby.japanese
元投稿者の逸見です。 06/04/25 に KIMURA Koichi<kimura.koichi-AMwPzFTG5Oh3+QwDJ9on6Q@xxxxxxxxxxxxxxxx> さんは書きました: > 木村です。 > > On Tue, 25 Apr 2006 12:57:35 +0900 > "ITSUMI ken-ichi" <itsumi.ml-Re5JQEeQqe8AvxtiuMwx3w@xxxxxxxxxxxxxxxx> wrote: > > > ruby勉強中の 逸見と申します。 > > > > perl でいうところの m//g で行なう処理を ruby ではどう書くのかリファレンスマニュアル > > を精読しても判らなかったので、質問させていただきます。 > > scanを使えばよろしいかと。 > #Stringクラスにあります。 成程、正規表現のところばかり探していては駄目なのですね。 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #!/usr/bin/python2.4 # -*- coding: euc-jp; mode:python -*- ''' ○使い方 $ url2inputs.py url url を引数として、そのページの入力フォーム関連のタグだけを表示する。 ''' import sys import urllib import re content = urllib.urlopen(sys.argv[1]).read() pattern=re.compile("<form.*?>" + "|</form>" + "|<input.*?/>" + "|<input.*?>" + "|<textarea.*?</textarea>" + "|<select.*?</select>" ,re.IGNORECASE|re.DOTALL) for tag in pattern.finditer(content): print tag.group() ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ おかげさまで、↑の Python に対応する Ruby のプログラムとして、↓のコード を書けばいいことは判りました。 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # -*- 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ではこうなる ) content.scan(pattern){|tag| puts tag} ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ が、ここでまた、新たな疑問が... ↑の二つの例では、正規表現を生成する compile メソッドの第一引数の、正 規表現を組み立てる所で、文字列と、+演算子の順序が逆になっていますが、 それはそうしないとエラーになるからです。つまり↓は動かないんです。 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pattern = Regexp.compile("<form.*?>" + "|</form>" + "|<input.*?/>" + "|<input.*?>" + "|<textarea.*?</textarea>" + "|<select.*?</select>" ,Regexp::IGNORECASE | Regexp::MULTILINE) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 文法的に、式中で、改行する時には、その前に、二項演算子を置かねばならない ようになっているんでしょうか? -- 逸見研一(いつみけんいち) Mixi http://mixi.jp/show_friend.pl?id=113732 Orkut http://www.orkut.com/Profile.aspx?uid=11299027584966195898 Blog http://d.hatena.ne.jp/amt/ Plan http://calendar.yahoo.co.jp/amt_tmp
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:42112] Re: [Q] perl の m//g に相当する処理を ruby で行ないたい, KIMURA Koichi |
|---|---|
| Next by Date: | [ruby-list:42114] Re: [Q]式中の改行と演算子位置 Was: [Q] perl の m//g に相当する処理を ruby で行ないたい, Yukihiro Matsumoto |
| Previous by Thread: | [ruby-list:42111] [Q] perl の m//g に相当する処理を ruby で行ないたい, ITSUMI ken-ichi |
| Next by Thread: | [ruby-list:42114] Re: [Q]式中の改行と演算子位置 Was: [Q] perl の m//g に相当する処理を ruby で行ないたい, Yukihiro Matsumoto |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |