use strict;
my $str = '2018|Feb|AUTOS|MATRIZ|OFICINA MATRIZ|ARMANDO LEON PTACNIK|ARMANDO LEON HERNANDEZ 4684|DLL|ARMANDO L. PTAN|TURISTAS|1067|17/02/2018|ALONSO HERNANDEZ ZAZUETA €|X|01/01/2000|X|45||S/C|368|368|0|0|01/01/2000|0|0|
2018|Feb|AUTOS|MATRIZ|OFICINA MATRIZ|ARMANDO LEON PTACNIK|ARMANDO LEON HERNANDEZ 4684|DLL|ARMANDO L. PTAN|OBLIGATORIO TURISTAS|1067|17/02/2018|ALONSO HERNANDEZ ZAZUETA €|X|01/01/2000|X|45||S/C|1|1|0|0|01/01/2000|0|0|
2018|Mar|AUTOS|MATRIZ|OFICINA MATRIZ|ARMANDO LEON PTACNIK|ARMANDO LEON HERNANDEZ 4684|NAL|ARMANDO L. PTAN|MOTOCICLETAS|187|15/03/2018|ALONSO HERNANDEZ ZAZUETA €|R000216|12/03/2018|S|45|POLIZA YA RENOVADA|S/C|901|901|0|216|12/03/2018|797|0|
2018|Mar|AUTOS|MATRIZ|OFICINA MATRIZ|ARMANDO LEON PTACNIK|ARMANDO LEON HERNANDEZ 4684|NAL|ARMANDO L. PTAN|OBLIGATORIO MOTOCICLETAS|187|15/03/2018|ALONSO HERNANDEZ ZAZUETA €|X|01/01/2000|X|45||S/C|14|14|0|0|01/01/2000|0|0|
2018|Jul|AUTOS|MATRIZ|OFICINA MATRIZ|OFICINA MATRIZ|ROQUE ALONSO P Y ASOCIADOS AGENTE DE SEGUROS Y DE FIANZAS SA DE CV 9761|NAL|MATRIZ|SEGURO DE AUTOMOVILES|767608|07/07/2018|GUSTAVO MONTAÑO ALVAREZ|S806612|19/06/2018|X|0|RENOVADA X NUMERO DE SERIE GUSTAVO MONTAÑO ALVAREZ|S/C|13395|11721|0|0|01/01/2000|0|0|';
my $regex = qr/(?P<Ano>[2018]+)\|(?P<Mes>[A-Za-z]+)\|(?P<RamGrl>[A-Za-z\s]+)\|(?P<Suc>[\w\s]+)\|(?P<Ofn>[\w\s\d\(\)\-\.\&\,]+)\|(?P<Pmt>[\w\s\d\(\)\-\.\,\¥\*\%\&\Ü\Ñ]+)\|(?P<Agente>[\w\d\s\.\,\¥\¤\$\&\%\-]+)\|(?P<Mon>[A-Za-z]+)\|(?P<SucEmi>[\w\s\.\-\(\)]+)\|(?P<RamoEmi>[\w\s\.\/]+)\|(?P<Poliza>[0-9]+)\|(?P<FecFinVig>[\d\/]+)\|(?P<Cliente>()|[a-zA-ZÀ-ÖØ-öø-ÿ\s\.\,\-\*\'\%\d\&\¥\¤\!\¡\+\`\´\#\(\)\;\€\"\\¨\:\_\@\‘\Ã\.+]+)\|(?P<StaMc>[\w\d]+)\|(?P<FecMC>[\d\/]+)\|(?P<NoAPet>[MSX]+)\|(?P<Renovadas>[\d]+)\|(?P<Observaciobnes>(()|[a-zA-ZÀ-ÖØ-öø-ÿ\d\s\.\,\:\+\(\)\¥\¤\-\#\;\&\$\*\%\'\/\´\!\@\"\‘\Ã])+)\|(?P<Motivo>[S/C]+)\|(?P<PrimaEmi>[\-\d]+)\|(?P<PrimaCob>[0-9]+)\|(?P<Siniestros>[\d\-]+)\|(?P<PolizaNva>[0-9]+)\|(?P<FecRenovacion>[\d\/]+)\|(?P<PrimaDRenov>[0-9]+)\|(?P<CobranzaDRen>[0-9]+)\|/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