\A
соответствует началу строки, а следующий взгляд сзади соответствует, если перед этой позицией нет дефиса.
Вы находитесь в начале строки, конечно, перед ней нет символа!
Вместо этого используйте отрицательный прогноз: (?![\d\-])
.
Похоже на конец строки. Вместо этого вы должны использовать отрицательный взгляд (?<!\-)
.
Я думаю, что эквивалентное выражение для вашего текущего будет:
DOMAIN_LABEL_RE = """
(?i # case insensitive
\A(
([a-z]) # need at least 1 letter and cannot start with digit or hyphen
([a-z\d-]*?)
(?<!-) # cannot end with a hyphen
)\Z
)
"""
Примечание: Я не проверял, действительно ли выражение подходит для задачи, которую вы пытаетесь решить.