re = /(,\s(?:vol|pt)\.(*SKIP)(*F)|(?:vol|pt|volume|part))/im
str = 'Should Match:
a) Any occurences of "Volume" OR "Part" (Case Insensitive);
b) Any occurence of "vol" or "pt" (CI) that does not have [[comma][space] before AND [period] after;
My volume 1
My name vol2.
My, volume 1
, pt. vol2.
, part.
, pt.
, pt
, vol
. pt.
// Should match below as there is no [period] after it
The Red Pill, Pt 2
, Pt 2'
subst = '\\1'
result = str.gsub(re, subst)
# Print the result of the substitution
puts result
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