Если вы можете что-то сделать как со встроенной функцией, так и с регулярными выражениями, то обычно встроенный подход будет быстрее и более разборчивым.
Мир регулярных выражений - это лабиринт извилистых маленьких отрывков, населенных поставщиками почти истинных понятий типа «», «The». соответствует каждому символу "" "... который он делает, но только когда вы используете флаг re.DOTALL. Эта информация не скрывается за мелким шрифтом документации; это как ПЕРВАЯ запись "специальных символов":
.
(Точка.) В режиме по умолчанию это соответствует любому символу, кроме новой строки. Если указан флаг DOTALL, он соответствует любому символу, включая символ новой строки.
>>> import re
>>> re.findall(".", "fu\nbar")
['f', 'u', 'b', 'a', 'r']
>>>