re = /(^\d+)\s*(.*)(VC\d+)\s+(.*)([\s\S]*?)(A\+B\)\s+(\$\d{1,3}(,\d{3})*(\.\d+)?))/m
str = '1, 3, 4, 7
1 A) $11,644,939.00 VC0000007181 S.T. RHOADES CONSTRUCTION, INC. Phone (530)223-9322
B) 210 Days * 10000 8585 COMMERCIAL WAY CSLB# 00930684
A+B) $13,744,939.00 REDDING CA 96002
2 A) $12,561,053.00 VC0000007021 GR SUNDBERG, INC. Phone (707)825-6565
B) 210 Days * 10000 5211 BOYD ROAD CSLB# 00732695
A+B) $14,661,053.00 ARCATA CA 95521 Fax (707)825-6563
3 A) $13,098,288.00 VC1800001127 CALIFORNIA HIGHWAY CONSTRUCTION GROUP, Phone (925)766-7014
INC.
B) 210 Days * 10000 1647 WILLOW PASS ROAD CSLB# 01027700
A+B) $15,198,288.00 CONCORD CA 94520 Fax (925)265-9101
4 A) $13,661,954.26 VC0000003985 MERCER FRASER COMPANY Phone (707)443-6371
B) 210 Days * 10000 200 DINSMORE DR CSLB# 00105709
A+B) $15,761,954.26 FORTUNA CA 95540 Fax (707)443-0277
Bid Opening Date: 11/15/2022 Page 2
Contract Number: 01-0H20U4 11/15/2022
5 A) $15,396,278.00 VC0000000213 GRANITE CONSTRUCTION COMPANY Phone (831)728-7561
B) 210 Days * 10000 585 W BEACH STREET CSLB# 00000089
A+B) $17,496,278.00 WATSONVILLE CA 95076
Bid Opening Date: 11/15/2022 Page 3
Contract Number: 01-0H20U4 11/15/2022
'
# 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