input: Write a python function to extract and count the frequency of words from a given text using regular expressions, and return the top N most frequent words in descending order of frequency.
  assert get_top_n_words("The quick brown fox jumped over the lazy dog", 3) == [('The', 1), ('quick', 1), ('brown', 1)]
  assert get_top_n_words("apple apple orange banana banana banana", 2) == [('banana', 3), ('apple', 2)]
  assert get_top_n_words("hello world hello", 1) == [('hello', 2)]
output: def get_top_n_words(text, n):
      import re
      from collections import Counter
  
      # Find all words using regular expression
      words = re.findall(r'\b\w+\b', text)
      
      # Count the frequency of each word
      word_counts = Counter(words)
      
      # Get the top N most frequent words
      top_n_words = word_counts.most_common(n)
      
      return top_n_words