Чтобы сопоставить пустую строку - даже в многострочном режиме - вы можете использовать \A\Z
, поэтому:
re.compile('\A\Z|\A\Z*|\A\Z+')
Разница в том, что \A
и \Z
являются началом и концом строки , тогда как ^
и $
могут соответствовать началу / концу строк поэтому $^|$^*|$^+
может потенциально соответствовать строке, содержащей символы новой строки (если флаг включен).
И чтобы ничего не совпадать (даже с пустой строкой), просто попытайтесь найти содержимое до начала строки, например:
re.compile('.\A|.\A*|.\A+')
Поскольку никакие символы не могут находиться перед \ A (по определению), это всегда не будет соответствовать.