Python RE не нашел последнюю пустую строку в шаблоне обратной ссылкиPython

Программы на Python
Anonymous
Python RE не нашел последнюю пустую строку в шаблоне обратной ссылки

Сообщение Anonymous »

Следующий код содержит два шаблона: первый шаблон — (1)?, а второй шаблон — (1)?\1.
Вывод findall_no_reference верен, поскольку он содержит последнюю пустую строку, но вывод findall_with_reference неверен, поскольку он не включает последнюю пустую строку.
Насколько я понимаю, последняя пустая строка '' в (1)?\1 также должно существовать в 11, тогда:

Код: Выделить всё

"(1)?\1" = "last empty string" + "back reference to last empty string" = ''
Но Python нашел только 1 совпадение, если шаблон равен (1)?\1.
Вот тестовый код (проверен в терминале 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', '']
Почему последняя пустая строка '' не включена в findall_with_reference?

Вернуться в «Python»