<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Thanks all for your kind assistance.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>You are correct, I do end up with a badly formatted csv strings to analyze but that was my doing.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>The document starts as a badly formatted PDF which I converted to Excel – the conversion doesn’t recognize all the columns successfully. My thought was to loop through the rows in the excel tables and create the csv strings on each row then search in those strings for the patterns I need to extract. <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Perhaps there is a PDF Perl module that would be useful for this kind of task?<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Christopher Jones<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>14 Oneida Avenue<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Toronto, ON<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>416-697-0056<o:p></o:p></span></p></div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> legrady [mailto:legrady@gmail.com] <br><b>Sent:</b> Thursday, August 11, 2016 1:22 PM<br><b>To:</b> Rob Janes; Chris Jones<br><b>Cc:</b> toronto-pm@pm.org<br><b>Subject:</b> Re: [tpm] Regex assistance<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>How about if you split () on Co. Mas, and then just check the elements of the array for the values you want?<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>You pattern captures into separate variables : two digits, a dot, two digits, a dot, another two digits.  From your description you want to the whole thing: <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>      /(\d{2}\.\d {2}\.\d {2})/<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>OR a bit sloppily,  but valid <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>     /([0-9.]{8})/<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>It matches non valid strings,  but you say those won't happen. Or by adding an 'x' flag, you can comment your regex. <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>    / (                     # capture<o:p></o:p></p></div><div><p class=MsoNormal>        [0-9.] {8}      # 8 chars which are digit or dot<o:p></o:p></p></div><div><p class=MsoNormal>        ) /'<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Probably more useful in more complex instances.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div id="composer_signature"><div><p class=MsoNormal><span style='font-size:10.0pt;color:#575757'>Sent from my Samsung Galaxy smartphone.<o:p></o:p></span></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><p class=MsoNormal><span style='color:black'>-------- Original message --------<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:black'>From: Rob Janes <<a href="mailto:janes.rob@gmail.com">janes.rob@gmail.com</a>> <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:black'>Date: 2016-08-11 11:29 (GMT-05:00) <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:black'>To: Chris Jones <<a href="mailto:cj@enersave.ca">cj@enersave.ca</a>> <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:black'>Cc: <a href="mailto:toronto-pm@pm.org">toronto-pm@pm.org</a> <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:black'>Subject: Re: [tpm] Regex assistance <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:black'><o:p> </o:p></span></p></div></div><p>^,* in front then |(\d\d\.\d\d\d),*$ after?<o:p></o:p></p><p>Ok replace bar with ,.*,<o:p></o:p></p><div><p class=MsoNormal>On Aug 11, 2016 10:38 AM, "Chris Jones" <<a href="mailto:cj@enersave.ca">cj@enersave.ca</a>> wrote:<o:p></o:p></p><p class=MsoNormal><br>Hello Perl Mongers,<br><br>I am looking for assistance with a regex. I have a bunch of strings in for form:<br><br>"01.03.16,,Studio one, Space 22,1         500,500,01.051,,"<br>or<br>",01.03.16,,Studio one, Space 22,1         500,500,01.051,"<br>or<br>",01.03.16,,Studio one, Space 22,1         500,500,01.051,,"<br>or<br>",01.03.16,,Studio one, Space 22, ,01.051,,"<br><br>So the middle section can be one or more comma separated strings.<br><br>I am trying to match and return the first non-blank pattern and the last non-blank pattern<br>01.03.16 and 01.051 – these numbering formats are always the same: xx.xx.xx and yy.yyy<br><br>So far I have a regex that matches the first pattern:<br><br>"([0-9]{2})([\.])([0-9]{2})([\.])([0-9]{2})"<br><br>In any of those above example.<br><br>I am stuck after that.<br>Any insights appreciated!<br><br><br><br>-- <br><br>Chris Jones<br>14 Oneida Avenue<br>Toronto, ON M5J 2E3<br><a href="tel:416-697-0056" target="_blank">416-697-0056</a><br><br>_______________________________________________<br>toronto-pm mailing list<br><a href="mailto:toronto-pm@pm.org" target="_blank">toronto-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/toronto-pm" target="_blank">http://mail.pm.org/mailman/listinfo/toronto-pm</a><o:p></o:p></p></div></div></body></html>