use strict;
my $str = '<?php
return
[
\'server\'=> [
\'host\'=> \'smtp.saluddigital.net\',
//\'helo\'=> url(\'domain\'),
\'username\'=> \'php7@saluddigital.net\',
\'password\'=> \'x5~JkKU+X(NY4R$C\',
\'port\'=> \'25\',
\'charset\'=> \'{\\web.charset}\',
],
\'mails\'=> [
// Para especificar varias direcciones, separarlas por comas
// Para especificar un nombre para una dirección, usamos el formato
// estándard nombre <email>, <email>.
// Ejemplos:
// \'jatubio@saluddigital.net\'
// \'Andrés Pozo <apozo@saluddigital.net>, ergon@saluddigital.net\'
//
// Usar {domain} para sustituirlo por el dominio actual
\'default\'=> [
\'asunto\'=> \'{\\web.titulo}\',
\'from\'=> \'{\\web.titulo} <info@[url domain]>\',
\'replyto\'=> \'\',
// Poner siempre en copia
\'cc\'=> \'\',
// Poner siempre en copia oculta
\'cco\'=> \'\',
// Direcciones para enviar la copia de administración
\'admin\'=> \'jatubio@saluddigital.net\',
// Activar/Desactivar la copia de administración
\'adminsend\'=> true,
// Enviar una copia si está activado el flag de debug
\'debug\'=> \'jatubio@saluddigital.net\',
// Activar/Desactivar la copia de debug
\'debugsend\'=> true,
// Modificar alguna de las opciones anteriores si cumple el filtro
\'filtros\'=> [
\'paises\'=> [
\'filtro\'=> [
\'Pais\'=>\'España\',
],
\'opciones\'=> [
\'asunto\'=>\'Hola desde España\',
],
],
],
],
// Formulario de contacto
\'contacto\'=> [
\'asunto\'=> \'Contacto desde {\\web.titulo}\',
\'from\'=> \'{\\web.titulo} <contacto@[url domain]>\',
// Campos a incluir en el [repetir datos]
// Si está vacío, se incluyen todos
\'campos\'=> [\'Nombre\', \'Apellidos\', \'Telefono\', \'EMail\', \'Pais\', \'Curso\', \'Comentario\'],
\'campoTo\' => \'Nombre <EMail>\',
//template=> \'contacto\',
],
],
\'templates\'=> [
\'base\'=>\'General\',
],
];
//--------------------------------------------------------------------
//--------------------------------------------------------------------
// Ejemplos
//--------------------------------------------------------------------
//--------------------------------------------------------------------
return
[
\'server\'=> [
\'host\'=> \'smtp.saluddigital.net\',
\'helo\'=> url(\'domain\'),
\'username\'=> \'php7@saluddigital.net\',
\'password\'=> \'x5~JkKU+X(NY4R$C\',
\'port\'=> \'25\',
\'charset\'=> \'{\\web.charset}\',
],
// Para especificar varias direcciones, separarlas por comas
// Para especificar un nombre para una dirección, usamos el formato
// nombre=>email.
// Ejemplos:
// \'jatubio@saluddigital.net\'
// \'Andrés Pozo=>apozo@saluddigital.net, ergon@saluddigital.net\'
\'default\'=> [
\'asunto\'=> \'{\\web.titulo}\',
\'from\'=> \'{\\web.titulo}=>info@[url domain]\',
\'replyto\'=> \'\',
// Poner siempre en copia
\'cc\'=> \'\',
// Poner siempre en copia oculta
\'cco\'=> \'\',
// Direcciones para enviar la copia de administración
\'admin\'=> \'jatubio@saluddigital.net\',
// Activar/Desactivar la copia de administración
\'adminsend\'=> true,
// Enviar una copia si está activado el flag de debug
\'debug\'=> \'jatubio@gmail.com\',
// Activar/Desactivar la copia de debug
\'debugsend\'=> true,
// Modificar alguna de las opciones anteriores si cumple el filtro
\'filtros\'=> [
\'paises\'=> [
\'filtro\'=> [
\'Pais\'=>\'España\',
],
\'opciones\'=> [
\'asunto\'=>\'Hola desde España\',
],
],
\'cursos\' => [
\'filtro\'=> [
\'Curso\'=>\'Consulta General\',
],
\'opciones\'=> [
\'cco\'=>\'consultas@gmai.com\',
],
]
],
],
// Formulario de contacto
\'contacto\'=> [
\'asunto\'=> \'Contacto desde {\\web.titulo}\',
\'from\'=> \'{\\web.titulo} <contacto@[url domain]>\',
\'filtros\'=> [
\'paises\'=> [
\'filtro\'=> [
\'Pais\'=>\'Costa Rica, Francia, Perú\',
],
\'opciones\'=> [
\'asunto\'=>\'Hola desde Costa Rica\',
\'from\'=> \'{\\web.titulo
} <costarica@[url domain]>\',
],
\'activo\'=> false,
],
\'casos\'=> [
\'filtro\'=> [
\'NumCaso\'=>\'1, 8, 10\',
],
\'opciones\'=> [
\'{{asunto}}\'=>\'Consulta sobre un caso\',
\'cc\'=> \'especialista@gmail.com\',
],
],
\'cursos\'=> [
\'activo\'=> false,
]
],
],
];';
my $regex = qr/(?<!\{)\{([^\s}]+)\}(?!\})/p;
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