re = /BN((6(0[0-9]|1[0134]|2[1-9]|3[0-1]))|7(0[68]|1(0|1[A-C])|2([1-4]|5|[7-9])|3[01]))/
str = 'BN601
BN602
BN603
BN604
BN605
BN606
BN607
BN608
BN609
BN610
BN611
BN612
BN613
BN614
BN615
BN616
BN617
BN618
BN619
BN620
BN621
BN622
BN623
BN624
BN625
BN626
BN627
BN628
BN629
BN630
BN631
BN632
BN701
BN702
BN703
BN704
BN705
BN706
BN707
BN708
BN709
BN710
BN711
BN711A
BN711B
BN711C
BN711a
BN711b
BN711c
BN712
BN713
BN714
BN715
BN716
BN717
BN718
BN719
BN720
BN721
BN722
BN723
BN724
BN725
BN726
BN727
BN728
BN729
BN730
BN731
BN732
'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html