Convert cardinal abbreviations into full cardinal direction
Some notes:


I'd leave some room between the constants and the method definitions (subjective). 
if (not match[1].empty?) and (not match[2].empty?). Parenthenses not necessary. In any case, for boolean operations, use !, &amp;&amp;, ||.
When you have so many similar ifs, they can usually be refactored into something else (usually, with no conditionals at all, but array processing).


First, with your code as reference mind, I'd write:

module Example 
  class Utils
    CARDINAL_PATTERN = /^([NS]?)([EW]?)$/
    CARDINAL_DB = {'N' =&gt; 'NORTH', 'S' =&gt; 'SOUTH', 'E' =&gt; 'EAST', 'W' =&gt; 'WEST'}

    def correct_cardinal(word)
      clean_word = word.gsub(/\p{Punct}/, '').upcase
      match = CARDINAL_PATTERN.match(clean_word)
      if match
        cardinals = match.captures.reject(&amp;:empty?)
        CARDINAL_DB.values_at(*cardinals).join(" ")
      else
        word
      end
    end
  end 
end


On a second refactor, as @janos pointed out, you can build the complete hash of {CARDINALS => NAME} (well, it's so short you could just write down all its values, but let's build it programatically to see a way to do it). 

module Example 
  class Utils
    CARDINALS = {'N' =&gt; 'NORTH', 'S' =&gt; 'SOUTH', 'E' =&gt; 'EAST', 'W' =&gt; 'WEST'} 
    # DIRECTIONS: {"NE"=&gt;"NORTH EAST", "NW"=&gt;"NORTH WEST", "N"=&gt;"NORTH", ...}
    DIRECTIONS = ["N", "S", ""].product(["E", "W", ""]).map do |cardinals|
      name = CARDINALS.values_at(*cardinals).compact.join(" ")
      [cardinals.join, name]
    end.to_h

    def correct_cardinal(word)
      clean_word = word.gsub(/\p{Punct}/, '').upcase
      DIRECTIONS.fetch(clean_word, word)
    end
  end
end