正規表現

URL をパースする

参考 : URI (Uniform Resource Identifier) サポートライブラリ % irb irb(main):002:0> require uri => true irb(main):004:0> url = URI.parse("http://www.example.co.jp/dir/test.php?q=3") => #<URI::HTTP:0x155cfc0 URL:http://www.example.co.jp/dir/test.php?q=3> irb(main):006:0> url.scheme => "http" irb(main):007:0></uri::http:0x155cfc0>…

? の特殊な使い方

(?= ) 先読み(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