2008-03-03から1日間の記事一覧

? の特殊な使い方

(?= ) 先読み(lookahead)。パターンによる位置指定(幅を持たない) (?=re1)re2 という表現は、re1 と re2 両方にマッチするものにマッチする正規表現です。 re1(?=re2) という表現は、後に re2 とマッチする文字列が続く、正規表現 re1 です。 p /foo(?=bar)/…

全角文字に挟まれた半角スペースを削除するには?

全角文字に挟まれた半角スペースを削除するには? 36618 sinara blade こんな感じでどうかな。 str.gsub!(/([^ ]) +(?=([^ ]))/) { $1.size > 1 && $2.size > 1 ? $1 : $& } 36628 sinara blade おお、なるほど。R 以外の一文字というは (?!R). と書けるとい…

スペースを除く空白にマッチさせる

\s 空白文字。[ \t\n\r\f] と同じ

改行を除く任意の 1 文字にマッチさせる

. 改行を除く任意の 1 文字にマッチします。正規表現オプション m (複数行モード。正規表現リテラルを参照)では、改行を含む任意の 1 文字にマッチします。 多バイト文字に対応した正規表現では、その 1 文字(1 バイトでなく)とマッチします。 よく使う用例 :…

マッチ対象にせずにグループ化させる

(?: ) 後方参照を伴わないグループ化。つまり \1、\2 (あるいは $1、$2)などの対象にはならず、単純なグループ化の用途で使用します。 /(abc)/ =~ "abc" p $1 => "abc" /(?:abc)/ =~ "abc" p $1 => nil

YAMLメモ - 配列とハッシュをお互いにネストさせる

プログラマーのための YAML 入門 (初級編) 基本的な書き方 - 配列とハッシュのネスト 配列とハッシュはお互いにネストさせることができます。 次の例は、配列の中にハッシュをネストさせる例です。 - name: Hanako email: flower@mail.com - name: Sumire em…