use strict;
my $str = '2016-06-22 00:00:15,759 [http-nio-8110-exec-12] ERROR com.encima.project.h2y.handlers.XML.XMLBusinessComparator - [Tx: 710117088] Hotel id 10500 : No weekends found for given hotel with the query criteria QueryData(arrivaldate=2016-09-05, nbofnights=6, nbofadults=2, nbofchildren=0, agechildren=null, nbofbabies=0, agebabies=null, nbofrooms=1, language=es, affiliate=4894, hotelIds=[10628, 12175, 9869, 12905, 11670, 10500, 10822, 12132, 6309, 12559])';
my $regex = qr/(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}) \[.*\] ERROR com.encima.project.h2y.handlers.XML.XMLBusinessComparator - \[Tx: (\d{8,12})\] Hotel id (\d*) : No weekends found for given hotel with the query criteria QueryData\(arrivaldate=(\d{4}-\d{2}-\d{2}), nbofnights=(\d), nbofadults=(\d), nbofchildren=(\d), agechildren=.{0,4}, nbofbabies=\d, agebabies=.{0,4}, nbofrooms=(\d), language=(\w{2}), affiliate=(\d{0,5}), hotelIds=.*/sp;
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