Поскольку необходимому значению всегда предшествует $
в отдельной строке, вы можете использовать
\$(\d[\d,.]*)[\n\r]+(?:.*[\r\n]+){0,2}Issued\s+on\b
Необходимое значение находится в группе 1.
Подробности
\$
- a $
char (\d[\d,.]*)
- Группа 1: цифра, за которой следуют любые цифры 0+, ,
или .
символы [\n\r]+
- 1 или более символов CR или LF (?:.*[\r\n]+){0,2}
- 0, 1 или 2 повторения 0+ символов, кроме символов разрыва строки, за которыми следуют символы 1+ LF / CR Issued\s+on\b
- Issued
, 1+ пробелов, on
как целое слово (так как \b
- граница слова).
См. regex demo .
Python demo :
import re
rx = r"\$(\d[\d,.]*)[\n\r]+(?:.*[\r\n]+){0,2}Issued\s+on\b"
s = "Delivery Charge $2\nPromo - (FIRST) ($4)\n$1,000.55\nNew Coins earned $5\nIssued on behalf of ......................."
match = re.search(rx, s, re.M)
if match:
print(match.group(1)) # -> 1,000.55