#pattern = /(?<=丁目)(\d+)(?=番地)/
pattern = /(?:丁目)(\d+)(?:番地)/
pattern.match('神奈川県川崎市川崎区大宮町2丁目10番地')
#<MatchData "丁目10番地" 1:"10">
pattern = /(?<=丁目)(\d+)(?=番地)/
pattern.match('神奈川県川崎市川崎区大宮町2丁目10番地')
#<MatchData "10" 1:"10">
pattern = /(?<=丁目)(\d+)/
pattern.match('神奈川県川崎市川崎区大宮町2丁目10番地')
#<MatchData "10" 1:"10">
pattern = /(?:丁目)(\d+)/
pattern.match('神奈川県川崎市川崎区大宮町2丁目10番地')
#<MatchData "丁目10" 1:"10">
pattern = /(?<!2012)-(?<month_and_day>\d{2}-\d{2})/
p pattern.match('2012-01-01')
pattern.match('2016-01-01')
nil
#<MatchData "-01-01" month_and_day:"01-01">
pattern = /(\w+)/
p pattern.match('ruby')[1]
p pattern.match('ruby3x3')[1]
"ruby" "ruby3x3"
"ruby3x3"
pattern = /(\w+)[0-9]/
p pattern.match('ruby')
p pattern.match('ruby5')[1] # 本は => "ruby5" とあるが誤植
nil #<MatchData "ruby5" 1:"ruby">
#<MatchData "ruby5" 1:"ruby">
pattern = /(?>\w+)[0-9]/
pattern === 'ruby5'
false
pattern = /(?>\w+)[0-9$]/
pattern === 'ruby3$3'
true
/ruby/mi
%r(ruby)mi
/ruby/mi
p %w(foo bar).map { |str| /#{str}/}
%w(foo bar).map { |str| /#{str}/o}
[/foo/, /bar/]
[/foo/, /foo/]
r = /R(?i)uby(?-i)/ # i オプションは -iがくるまでずっと有効
p r === 'ruby'
p r === 'Ruby'
r === 'RUBY'
false true
true
次回は "5-4 Comparable"から