Я бы не стал использовать здесь регулярное выражение, потому что единственным значимым разделением между логическими терминами является 2 или более пробелов.Отдельные термины, включая тот, который вы хотите сопоставить, также могут содержать пробелы.Итак, я рекомендую сделать регулярное выражение на входе, используя \s{2,}
в качестве шаблона.Это даст список, содержащий все условия.Затем мы можем просто пройтись по списку один раз, и когда мы найдем перспективный термин, мы можем вернуть предыдущий термин в списке.
import re
a = "172 211 342 15/08/2017 TRANSFER OF LAND $610,000 CASH & MTGE"
parts = re.compile("\s{2,}").split(a)
print(parts)
for i in range(1, len(parts)):
if (parts[i] == "15/08/2017"):
print(parts[i-1])
['172 211 342', '15/08/2017', 'TRANSFER OF LAND', '$610,000', 'CASH & MTGE']
172 211 342