Вывод findall_no_reference верен, поскольку он содержит последнюю пустую строку, но вывод findall_with_reference неверен, поскольку он не включает последнюю пустую строку.
Насколько я понимаю, последняя пустая строка '' в (1)?\1 также должно существовать в 11, тогда:
Код: Выделить всё
"(1)?\1" = "last empty string" + "back reference to last empty string" = ''
Вот тестовый код (проверен в терминале bash):
Код: Выделить всё
import re
pattern = "(1)?"
string = "11"
print("findall_no_reference: ", [match for match in re.findall(pattern, string)])
pattern = "(1)?\\1"
string = "11"
print("findall_with_reference: ", [match for match in re.findall(pattern, string)])
Код: Выделить всё
findall_no_reference: ['1', '1', '']
findall_with_reference: ['1']
Код: Выделить всё
findall_no_reference: ['1', '1', '']
findall_with_reference: ['1', '']