Ruby 1.9 regex (named capture group)
836 ワード
Ruby 1.9正則はサポートネーミンググループを追加し、正則がより良い読み取り可能な行を持つようにした.
各セクションの正則を定義し、グループに名前を付け、後に追加できます.
{0}は、一致するコンテンツが取得されないことを示し、gを使用してペアを参照するグループで構成されます.
大きな正則に、/x修飾を加えます.このような複雑な正則は、より読みやすいものになります.
matchとhashを用いて,グループの名前をkeyとしてマッチングコンテンツにアクセスできるようになった.
各セクションの正則を定義し、グループに名前を付け、後に追加できます.
{0}は、一致するコンテンツが取得されないことを示し、gを使用してペアを参照するグループで構成されます.
大きな正則に、/x修飾を加えます.このような複雑な正則は、より読みやすいものになります.
users = %w{
alice:10.23.52.112:true
bob:192.168.10.34:false
}
user_regexp = %r{
(?<username> [a-z]+ ){0}
(?<ip_number> [0-9]{1,3} ){0}
(?<ip_address> (\g<ip_number>\.){3}\g<ip_number> ){0}
(?<admin> true | false ){0}
\g<username>:\g<ip_address>:\g<admin>
}x
users.each do |u|
r = user_regexp.match(u)
puts "User #{r[:username]} is from #{r[:ip_address]}"
end
matchとhashを用いて,グループの名前をkeyとしてマッチングコンテンツにアクセスできるようになった.