input: Write a function to find the top N most common words in a given text.
  assert most_common_words("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer lacinia egestas odio, sed dictum nibh eleifend ac. Morbi hendrerit nisi elit, eget laoreet lorem sagittis vel. Mauris vel accumsan ipsum. Nam at suscipit turpis.", 5) == [('elit', 2), ('ipsum', 2), ('lorem', 2), ('dolor', 1), ('sit', 1)]
  assert most_common_words("hello world! hello everyone. this is a test. this is only a test.", 3) == [('test', 2), ('this', 2), ('a', 2)]
  assert most_common_words("one fish two fish red fish blue fish", 2) == [('fish', 4), ('one', 1)]
output: def most_common_words(text, N):
      from collections import Counter
      import re
      
      words = re.findall(r'\b\w+\b', text.lower())
      word_counts = Counter(words)
      return word_counts.most_common(N)