import re s = "Hi, domain: (foo.bar.com) bye. So long" print(re.findall(r'(?:^|\b)(\w+(?:\.\w+)*|\W+)(?!\.\w)(?=\b|$)', s)) print(re.findall(r'(?:^|(?<!\.)\b(?!\.)).+?(?=(?<!\.)\b(?!\.)|$)', s))
Standard input is empty
['Hi', ', ', 'domain', ': (', 'foo.bar.com', ') ', 'bye', '. ', 'So', ' ', 'long'] ['Hi', ', ', 'domain', ': (', 'foo.bar.com', ') ', 'bye. ', 'So', ' ', 'long']