use strict;
my $str = '29-09-2019, 20:50:21.355 15 QServer.exe LP5-BSS7-DSA 10.200.0.64 11784 Main 2 QServerService::RunLoop() Status(SERVICE_STOPPED);
29-09-2019, 20:50:21.355 1233215 QServer.exe LP5-BSS7-DSA 10.200.0.64 11784 Main 2 QServerService::RunLoop() Status(SERVICE_STOPPED);
29-09-2019, 21:31:06.424 245 QServer.exe QAG-MXG-CIAG02 10.5.3.144 7132 Trans_3 2 QKBSManager::HandleRequest: 248
01-10-2019, 22:23:36.400 5391 QClient.exe QAG-MXG-DCKR5 10.5.3.204 760 Main 8 104493 Path \'Domain:models/hbl%2Fdesignererror/LibSchedulerTM/UI/LibSchedulerTM/Component_FormGanttChartSchedulingCentre_TM/ModeledSecurities_FormGanttChartSchedulingCentre_TM.aus\': Reference \'/GanttChartSchedulingCentre_TM663/MenuOptimizer\' can not be resolved for \'ComponentSecurity\'. Please, check whether referenced element exists.
01-10-2019, 22:23:36.405 5392 QClient.exe QAG-MXG-DCKR5 10.5.3.204 760 Main 8 105603 Path \'Domain:models/hbl%2Fdesignererror/LibSchedulerTM/UI/LibSchedulerTM/Component_FormGanttChartSchedulingCentre_TM/ModeledSecurities_FormGanttChartSchedulingCentre_TM.aus\': \'ComponentSecurity\' can not be properly set to its parent \'ModeledSecurities FormGanttChartSchedulingCentre_TM\'.';
my $regex = qr/(\d{2}-\d{2}-\d{4}), (\d\d:\d\d:\d\d\.\+?\d+)\s*(\+?\d+)\s*(.*\.exe)\s*(.*?)\s*(\+?\d+\.\+?\d+\.\+?\d+.\+?\d+)\s*(\+?\d+)\s*([\w|\d]*)\s*(\d*)\s*(\d*)\s*(.*)/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