I need to process texts having tweets. Either using regular expression or even the normal python code

Text contains tokenised wrods, Only exact matches are required for the tweet text. Thus “#eat” or “@eat” or “eating” or “eat23” or “eat-Python” etc are not an exact match and can be ignored. If a word ends in one of the following forms of punctuation: ! , ? . ’ ” then it can be regarded as an exact match, e.g. “Python is a course you should not eat!” would match on “eat”. The words should be treated as case

I am tokenising the text using following function:

def sentenceBreak(text):
    '''This function is used to tokenize the text/sentence and store it in the form of bag of words.
    text: The text/sentence to be tokenised and stored as bag of words
    bag_of_words: Dictionary with key as tokenized word and value as frequency of the word in text/sentence
    #input example: text = "hello yes HEllo yES yes"
    #output example: {"hello": 2, "yes": 3}
    bag_of_words = {}
    t = text.lower().split() # Storing words with case insensitivity     
    #Question mark: if a word looks like 'live!!!' should 'live' be counted?
    for index, word in enumerate(t):
        if word[-1] in string.punctuation:
            bag_of_words[word[:-1]] = bag_of_words.get(word[:-1], 0) + 1
            bag_of_words[word] = bag_of_words.get(word, 0) + 1
    return bag_of_words