re = /((?'field'[a-z_]+)\s+(?'operator'eq|ne|gt|lt|ge|le)\s+(?'value'(?>'[\w\-:\s]+')|(?>[\w]+))(\s+(?'join'and|or))?)+/
str = 'activity_id eq 9 and
status eq \'active asdf activity_id eq 9 and var gt 3\'
status eq \'active\' and activity_id eq 9
activity_id eq 9
status eq \'active\'
status eq \'active asdf activity_id eq 9 and var gt 3\' and activity_id eq 9
activity_id eq 9
status eq \'active\'
status eq \'active
and done\'
activity_id eq 9 and status eq \'active\'
activity_id eq 9 or status eq \'active\'
status eq \'active\'
and activity_id eq 9
status eq \'active\' or activity_id eq 9
status eq \'active and done\' and activity_id eq 9
status eq \'active and done\' or activity_id eq 9
activity_id eq 9 and start_date le \'2021-03-20T00:00:00-00:00\'
start_date le \'2021-03-20T00:00:00-00:00\''
subst = ''
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