use strict;
my $str = 'Xxxxxxx \\n вул.Угорська,буд.12 \\n м.Львiв \\n ПП МЕРЕЖА-СЕРВIС ЛЬВIВ \\nОПЛАТА\\nСУМА: 62.98 ГРН\\nПiдпис власника картки не потрiбен!\\nVISA CREDIT 4472XXXXXXXX2021 \\nAID: A0000000031010\\nТЕРМIНАЛ: S11801ZY 16/09/2022 18:49:33\\nКОД АВТОРИЗАЦІЇ: 799207 ЧЕК N: 43409\\nRRN: 063597415491 \\nEXTERNAL RRN: 225915128338\\n(c) Ingenico Group TE7E v.142.102 27/10/\\nP1\\n';
my $regex = qr/.*сума:\s+(?<suma>\d{1,5}[.,]\d{1,2}).*\\n(?<issuerName>.*)(?<pan>[0-9X]{16}).*нал:\s(?<terminalId>[A-Z0-9]{8}).*авторизації:\s(?<approvalCode>\d{1,10}).*чек\sN:\s(?<chq>\d{1,10}).*rrn:\s(?<rrn>\d{1,15})/mip;
if ( $str =~ /$regex/ ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html