Write a function called `match` in Python that uses a regex to find any word repeated 5 times or more. Return that word. If no word is repeated 5 times or more, return an empty string.
Write a function called `match` in Python that uses a regex to find any word repeated 5 times or more. Return that word. If no word is repeated 5 times or more, return an empty string.
# Word Repetition Finder I'll write a Python function that uses regex to find any word repeated 5 times or more in a row and returns that word.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import re def match(text): """ Finds a word that is repeated 5 or more times consecutively in the text. Args: text (str): The input text to search Returns: str: The word that's repeated 5+ times, or empty string if none found """ # Pattern explanation: # \b(\w+)\b - Captures a word between word boundaries # (?:\s+\1\b){4,} - Looks for the same word (referenced by \1) repeated 4 or more times # This gives us a total of 5+ occurrences of the word pattern = r'\b(\w+)\b(?:\s+\1\b){4,}' # Search for the pattern in the text match = re.search(pattern, text, re.IGNORECASE) # Return the found word or empty string if match: return match.group(1) else: return "" |
1 2 3 4 5 6 7 8 9 10 11 | # Should return "hello" match("hello hello hello hello hello world") # Should return "test" match("this is a test test test test test of regex") # Should return empty string - only 4 repetitions match("word word word word is not enough") # Should return empty string - not consecutive match("word another word another word another word another word") |
I extracted the following code from that output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import re def match(text): """ Finds a word that is repeated 5 or more times consecutively in the text. Args: text (str): The input text to search Returns: str: The word that's repeated 5+ times, or empty string if none found """ # Pattern explanation: # \b(\w+)\b - Captures a word between word boundaries # (?:\s+\1\b){4,} - Looks for the same word (referenced by \1) repeated 4 or more times # This gives us a total of 5+ occurrences of the word pattern = r'\b(\w+)\b(?:\s+\1\b){4,}' # Search for the pattern in the text match = re.search(pattern, text, re.IGNORECASE) # Return the found word or empty string if match: return match.group(1) else: return "" |
Running the following program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import re def match(text): """ Finds a word that is repeated 5 or more times consecutively in the text. Args: text (str): The input text to search Returns: str: The word that's repeated 5+ times, or empty string if none found """ # Pattern explanation: # \b(\w+)\b - Captures a word between word boundaries # (?:\s+\1\b){4,} - Looks for the same word (referenced by \1) repeated 4 or more times # This gives us a total of 5+ occurrences of the word pattern = r'\b(\w+)\b(?:\s+\1\b){4,}' # Search for the pattern in the text match = re.search(pattern, text, re.IGNORECASE) # Return the found word or empty string if match: return match.group(1) else: return "" answer = match('hi hi hi hi hi') expected = "hi" assert answer == expected, f'Wrong answer; got {answer} instead of {expected}' answer = match('hi hi hi hi') expected = "" assert answer == expected, f'Wrong answer; got {answer} instead of {expected}' answer = match('hello this is is is is is a test') expected = "is" assert answer == expected, f'Wrong answer; got {answer} instead of {expected}' print('All tests passed') |
All tests passed
Testing if the previous output contains the string All tests passed
: True
Write a function called `match` in Python that uses a regex to find any word repeated 5 times or more. Return that word. If no word is repeated 5 times or more, return an empty string.
Write a function called `match` in Python that uses a regex to find any word repeated 5 times or more. Return that word. If no word is repeated 5 times or more, return an empty string.
# Function to Find Words Repeated 5+ Times Here's a solution that uses regular expressions to find words repeated 5 or more times:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import re from collections import Counter def match(text): # Use regex to find all words in the text words = re.findall(r'\b\w+\b', text.lower()) # Count occurrences of each word word_counts = Counter(words) # Find any word that appears 5 times or more for word, count in word_counts.items(): if count >= 5: return word # If no word appears 5 times or more, return an empty string return "" |
1 2 3 4 | # Examples print(match("one two three four five")) # Returns "" print(match("cat dog cat dog cat dog cat dog cat")) # Returns "cat" print(match("the the the the the quick brown fox")) # Returns "the" |
I extracted the following code from that output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import re from collections import Counter def match(text): # Use regex to find all words in the text words = re.findall(r'\b\w+\b', text.lower()) # Count occurrences of each word word_counts = Counter(words) # Find any word that appears 5 times or more for word, count in word_counts.items(): if count >= 5: return word # If no word appears 5 times or more, return an empty string return "" |
Running the following program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import re from collections import Counter def match(text): # Use regex to find all words in the text words = re.findall(r'\b\w+\b', text.lower()) # Count occurrences of each word word_counts = Counter(words) # Find any word that appears 5 times or more for word, count in word_counts.items(): if count >= 5: return word # If no word appears 5 times or more, return an empty string return "" answer = match('hi hi hi hi hi') expected = "hi" assert answer == expected, f'Wrong answer; got {answer} instead of {expected}' answer = match('hi hi hi hi') expected = "" assert answer == expected, f'Wrong answer; got {answer} instead of {expected}' answer = match('hello this is is is is is a test') expected = "is" assert answer == expected, f'Wrong answer; got {answer} instead of {expected}' print('All tests passed') |
All tests passed
Testing if the previous output contains the string All tests passed
: True