splitted = "hello and world or jump not read".split(/( and | or | not )/)
# => ["hello", " and ", "world", " or ", "jump", " not ", "read"]
splitted = splitted.unshift('and') unless splitted[0] == 'and'
# => ["and". "hello", " and ", "world", " or ", "jump", " not ", "read"]
splitted.each_slice(2).to_h
# => {"and"=>"hello", " and "=>"world", " or "=>"jump", " not "=>"read"}