Я бы изменил это:
## typo_name
block_reverse = block[::-1]
p = re.compile('(\w+)', re.VERBOSE)
typo_name_reverse = p.search(block_reverse).group(1)
typo_name = typo_name_reverse[::-1]
print(typo_name)
Иногда проще просто перевернуть строку, если вы ищете что-то в конце.Это просто находит имя в конце вашего блока.Есть несколько способов найти то, что вы ищете, и мы могли бы придумать все виды умных регулярных выражений, но если это сработает, этого, вероятно, достаточно:)
update
Однако я только что заметил причину, по которой оригинальное регулярное выражение не работало, состоит в том, чтобы использовать \b
его нужно экранировать как \\b
или быть необработанным, как это:
## typo_name
p = re.compile(r'\b(\w+)(\W*?)$', re.VERBOSE)
typo_name = p.search(block).group(1)
Что-то хорошее последовало за Qи A здесь: Поддерживает ли модуль Python границы слов (\ b)?