2000-06-01から1ヶ月間の記事一覧

文字列パターン内で,AND,ORを表現する

/re1|re2/ # re1かre2が含まれる文字列 /re1.*re2|re2.*re1/ # re1とre2が重複せずに両方含む文字列

連続する単語

re = /(foo|bar)\1/ p 'foofoo' =~ re #=> 0 p 'foobar' =~ re #=> nil p 'barfoo' =~ re #=> nil p 'barbar' =~ re #=> 0 re = /(foo|bar)(?!\1)(foo|bar)/ p 'foofoo' =~ re #=> nil p 'foobar' =~ re #=> 0 p 'barfoo' =~ re #=> 0 p 'barbar' =~ re #=> …

欲張りマッチと非欲張りマッチ

str = "<b>foo</b> <strike>bar</strike>" p str.gsub(/<.*>/, '') #=> "" p str.gsub(/<.*?>/, '') #=> "foo bar" {m} m回 {m,} m回以上 {m,n} m回以上,n回まで

ワイルドカードを正規表現にする

def wild_to_re( pat) Regexp.new( "\\A"+pat.gsub(/\./,'\\.').gsub(/\*/,'.*').gsub(/\?/,'.')+"\\z") end p wild_to_re( '*.*') #=> /\A.*\..*\z/ p wild_to_re( 'log????.txt') #=> /\Alog....\.txt\z/ これはライブラリの中をあされば,似たようなコー…

一定範囲の行を取り出す

perlには開始パターンと終了パターンを指定すると,その範囲を取り出せる演算子が存在するらしい. def range( a, s, e) def find(a, p) return a.index(p) unless p.kind_of? Regexp a.each_with_index {|x,c| return c if x =~ p } return nil end sl = fi…

n番めのマッチを見つける

# マッチするものの配列を作って,n番目を取り出す a = 'blue green red grern white'.scan(/\w+/) p "third color is #{a[2]}." if a.size>=2 # ループさせて,n番目にきたら処理する c = 0 'blue green red grern white'.gsub(/\w+/) { |x| c+=1; p "third…

正規表現にコメントをつける

p 'v1 = (6+5)*2; v2 = p->x;'.scan(/ [\w\.]+ # 英数字にマッチ | -> # アロー演算子(2文字以上の記号) | [^\s] # 1文字の記号 /x) 最後にxをつけると,正規表現中の空白が無視される.

単語にマッチさせる

p 'Seventh Avenue/Adam Clayton Powell Jr. Boulevard'.scan(/\w+/) #=> [["Seventh"], ["Avenue"], ["Adam"], ["Clayton"], ["Powell"], ["Jr"], ["Boulevard"]] '単語'という概念がアプリによって変わるので,単語とは何か?によって当然,正規表現も変わ…

文字にマッチさせる

r = /\A[A-Za-z]+\z/ p ['ABC' =~ r, 'ABC?' =~ r, '123' =~ r, '日本語' =~ r] #=> [0, nil, nil, nil] r = /\A[^\W\d_]+\z/ p ['ABC' =~ r, 'ABC?' =~ r, '123' =~ r, '日本語' =~ r] #=> [0, nil, nil, 0] 通常は前者で十分だけれど,特殊な文字(日本語と…

コピーと置換を同時に行ないたい

s1 = 'this is huge?' s2 = s1.sub(/this/, 'that') p s1 #=> "this is huge?" p s2 #=> "that is huge?" s3 = 'this is huge?' p s3.sub!(/this/, 'that') #=> "that is huge?" p s3.sub!(/this/, 'that') #=> nil 直接,対象の文字列を置換したい場合は,s…

概要

最低限の基本的なことを書くかも?予定地のみを確保.詳細は以下を参考に. プログラミング言語 Ruby リファレンスマニュアル http://www.namaraii.com/rubytips/?%A5%D1%A5%BF%A1%BC%A5%F3%A5%DE%A5%C3%A5%C1