use strict;
my $str = ',1414,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"kepware~5~63CC97F2-5494-43F2-9F92-79A2BEF58D2A","5:39265338",,1473800029,"2016-09-13 20:54:20.206 +0000 Tag=""MODBUS.ROBOT.Position_Base"" Value=""1414"" Quality=""good"" ","RS5c
kepware",Kepware,".206","1473800060.206",,,20,13,54,september,20,tuesday,2016,0,,,"24.97.250.66",kepware,1,,,"--_::._+_=""..""_=""""_=""""_",,Kepware,Kepware,RS5c,,,,,,29,0,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"1487.42566",,"kepware~5~63CC97F2-5494-43F2-9F92-79A2BEF58D2A","5:39143140",,1473798904,"2016-09-13 20:35:35.147 +0000 Tag=""OmronCJ.PLC1.Suply_conv.Belt_speed"" Value=""1487.42566"" Quality=""good"" ","RS5c
kepware",Kepware,".147","1473798935.147",,,20,13,35,september,35,tuesday,2016,0,,,"24.97.250.66",kepware,1,,,"--_::._+_=""...""_="".""_=""""_",,Kepware,Kepware,RS5c,,,,,,29,0,,
,,,,,,,,,,,,,,,,,,,,,0,,,,,,,,,,,,,,"kepware~5~63CC97F2-5494-43F2-9F92-79A2BEF58D2A","5:39117933",,1473798672,"2016-09-13 20:31:42.457 +0000 Tag=""MODBUS.ROBOT.Velocity_Sholder"" Value=""0"" Quality=""good"" ","RS5cSplunk1
kepware",Kepware,".457","1473798702.457",,,20,13,31,september,42,tuesday,2016,0,,,"24.97.250.66",kepware,1,,,"--_::._+_=""..""_=""""_=""""_",,Kepware,Kepware,RS5c,,,,,,29,0,,
,,,,,,,,,,,,,,,,,,,,,,,,,"1491.82166",,,,,,,,,,"kepware~5~63CC97F2-5494-43F2-9F92-79A2BEF58D2A","5:39105700",,1473798560,"2016-09-13 20:29:50.387 +0000 Tag=""OmronCJ.PLC1.Assy_conv.belt_speed"" Value=""1491.82166"" Quality=""good"" ","RS5c
kepware",Kepware,".387","1473798590.387",,,20,13,29,september,50,tuesday,2016,0,,,"24.97.250.66",kepware,1,,,"--_::._+_=""...""_="".""_=""""_",,Kepware,Kepware,RS5c,,,,,,29,0,,
,,,,,,,,,,,,,,,,,,,,1605,,,,,,,,,,,,,,,"kepware~5~63CC97F2-5494-43F2-9F92-79A2BEF58D2A","5:39087971",,1473798396,"2016-09-13 20:27:06.649 +0000 Tag=""MODBUS.ROBOT.Velocity_Max_Wrst3"" Value=""1605"" Quality=""good"" ","RS5c
';
my $regex = qr/^([^,]*,){39}"/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