Hatena::ブログ(Diary)

はけの徒然日記 このページをアンテナに追加 RSSフィード

2005 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 08 | 09 | 10 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 |
2011 | 01 | 02 | 03 | 04 | 11 | 12 |
2012 | 02 | 03 | 05 |
2014 | 02 | 03 | 04 | 05 | 12 |
2015 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 |

2006-08-14(Mon)

正規表現

Ruby勉強

マニュアルを見ながら今まで使ったことのない正規表現を試す。

なんか難しいぞ!

後方参照

p "abcdef" =~ /(...)/        # => 0
p "abcdef" =~ /(...)\1/      # => nil \1は'abc'
p "abcabc" =~ /(...)\1/      # => 0

(?# ) 正規表現中のコメント

用途がいまひとつ不明

"abcdef" =~ /^..(?#comment)./
p $&                         # => abc

(?: ) 後方参照を伴わないグループ化

"abcdef" =~ /(?:...)(...)/
p $1                         # => def
"abcdef" =~ /(...)(...)/
p $1                         # => abc

(?=re1)re2 re1,re2両方にマッチ

p "abcdef" =~ /(?=a.*f).{6}/ # => 0
p "abcdef" =~ /(?=a.*c).{6}/ # => 0   マッチの範囲は異なっても良い?
p "abcdef" =~ /(?=b.*f).{6}/ # => nil マッチ開始位置が異なればダメ?
p "abcdef" =~ /(?=b.*f).{5}/ # => 1
p "abcdef" =~ /(?=a.*g).{6}/ # => nil
p "abcdef" =~ /(?=.{6})a.*c/ # => 0   マッチの範囲は異なっても良い?
p "abcdef" =~ /(?=.{6})b.*f/ # => nil マッチ開始位置が異なればダメ?

re1(?=re2) re1の後にre2が続くre1にマッチ

p "abcdef" =~ /a.*(?=.*f)/   # => 0
p $&                         # => abcde  'f'が含まれない
p "abcdef" =~ /a.*(?=.{6})/  # => nil

(?!re1)re2 re1にマッチせずre2にマッチ

p "abcdef" =~ /(?!.{5})a.*f/ # => nil
p "abcdef" =~ /(?!.{3})d.*f/ # => nil
p "abcdef" =~ /(?!abc)d.*f/  # => 3

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/hake/20060814/p1