use strict;
my $str = '"8/20/2023","SQ *CHRIS- SAL","SQ *CHRIS- SAL","130.00","debit","Entertainment","CC Apple Card","",""
"8/20/2023","CHEVRON","CHEVRON","81.79","debit","Gas & Fuel","CC Apple Card","",""
"8/19/2023","DD DOORDASH 855-973-1040 CA
APPLE PAY","DD DOORDASH 855-973-1040 CA
APPLE PAY","64.38","debit","Food Delivery","CC Discover","",""
"8/19/2023","SP PEACHY K","SP PEACHY K","65.00","debit","Restaurants","CC Apple Card","",""
"8/19/2023","Cash App","Cash App","200.00","debit","Transfer","CHECKING","",""
"8/18/2023","DD DOORDASH 855-973-1040 CA
APPLE PAY","DD DOORDASH 855-973-1040 CA
APPLE PAY","10.15","debit","Food Delivery","CC Discover","",""
"8/18/2023","DD DOORDASH 855-973-1040 CA
APPLE PAY","DD DOORDASH 855-973-1040 CA
APPLE PAY","45.56","debit","Food Delivery","CC Discover","",""
"8/18/2023","GAS","GAS","18.69","debit","Utilities","CHECKING CapOne","",""
';
my $regex = qr/^"(\d{1,2})(\/)(\d{2})(\/)(\d{4})(.*)\n(.*)\n(.*\,"")/mp;
if ( $str =~ /$regex/g ) {
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