Python program to get the first word

Given a string the task it to find its first word with some rules:

  • The string can have points and commas
  • A word can start with a letter, a point or space
  • One word can contain one apostrophe and it stills being a valid one

For example:

assert first_word("Hello world") == "Hello" assert first_word(" a word ") == "a" assert first_word("don't touch it") == "don't" assert first_word("greetings, friends") == "greetings" assert first_word("... and so on ...") == "and" assert first_word("hi") == "hi" assert first_word("") == "Hello" 

The code:

def first_word(text: str) -> str:     """         returns the first word in a given text.     """     text = re.sub("[^A-Za-z'\s.]",'',text)     words = text.split()     for word in words:         for i in range(len(word)):             if word[i].isalpha() or word[i] == "'":                 if i == len(word) - 1:                     if word.find('.') != -1:                         return word.split('.')[0]                     else:                         return word 

How could we improve it?