Если я правильно понимаю ваш вопрос, то вам нужно найти последний символ-разделитель слева от символа, возвращаемого match_main, и первый разделитель справа от этого символа.Если это так, что-то вроде этого должно работать:
about_here = match_main(mystery_text, invoice, 0)
left_sep = mystery_text.rfind(' ', 0, about_here) + 1
right_sep = mystery_text.find(' ', about_here)
my_invoice = mystery_text[left_sep:right_sep]
Это предполагает, что ваш разделитель всегда является пробелом.Вам также необходимо проверить граничные условия: если ваш счет находится в начале или конце строки, rfind
и find
вернут -1.Это примерно то, что вы искали?
Кстати, Серхио предлагает разделить строку впереди, а затем выполнить сопоставление.Он прав, но я предполагаю, что вы имеете дело с очень длинной входной строкой (поскольку вы используете dif-match-patch) и не хотите создавать большой массив только для того, чтобы вычислить ваш номер.