Rubyで正規表現

Ruby正規表現を扱う方法をまとめておく。

doc = "<html>Lorem ipsum dolor sit amet</html>"

# Loremという文字が出現する位置を調べる
puts doc =~ /Lorem/
# => 6
# 逆でもいい
puts /Lorem/ =~ doc
# => 6

# 正規表現に一致する文字列を取得する
if md = doc.match(/<html>(.+)<\/html>/)
    # これも逆でもいい。→ /.../.match(doc)
    puts md[0]
    # => "<html>Lorem ipsum dolor sit amet</html>"
    #  全体と一致する文字列が入る
    puts md[1]
    # => "Lorem ipsum dolor sit amet"
    #  ()内の文字列が入る
end

# 取得したい文字列が複数ある場合は scan を使う
doc2 = "<html>Lorem ipsum dolor sit amet</html><html>sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</html>"
# 2つあるhtmlタグ内の文字列を取得したい
sd = doc.scan(/<html>([^<]+)<\/html>/)
# => [["Lorem ipsum dolor sit amet"], ["sed do eiusmod tempor incididunt ut labore et dolore magna aliqua"]]