my preference for a task like this is to use xpath and treat html as xml. if it's not xhtml then i would use jtidy to clean it up so it is.
then it's trivial to select all text nodes that are children of html, your code is more self-documenting and easier to mantain. i've written a super simple tag: <cf_tidy input="html" output="xhtmlVar" /> <cfset nodes = XmlFind(xhtmlVar, "xpathExp") /> Charlie Arehart wrote: > In the spirit of "teaching a man to fish", should anyone trip over RegEx > problems in the future, here are a few resources to help with regular > expressions. > > > > First, good ol' Ben Forta came out with a slim little book to help teach > RegEx's, in "Teach Yourself Regular Expressions in 10 Minutes". It's > available at Amazon at http://www.amazon.com/gp/product/0672325667/. > > > > Second, there are various tools to help you build RegEx's interactively, > including > > > > http://weitz.de/regex-coach/ > > http://www.regular-expressions.info/regexbuddy.html > > > > and still more listed at places like: > > > > http://www.larkware.com/RegexTools.html > > http://www.regular-expressions.info/ > > > > Still another useful tool, which is helpful when one is searching for files > having content (or names) matching a given regex, is a free (Windows) tool > called Agent Ransack (http://www.agentransack.com > <http://www.agentransack.com/> ). It's a freeware version of a commercial > tool called File Locator Pro. I've blogged more details about it before: > > > > http://www.tipicalcharlie.com/a_better_file_findsearch_tool_on_windows.htm > > > > But even beyond using it for finding files, I sometimes call it up even when > I'm not interested in building the RegEx for use in that tool just because I > like its regular expression builder. > > > > Finally, for those who may wonder why one would care to learn about them, > regular expressions can be used in many places, including such file finding > tools, and in editors-including Dreamweaver MX, CF Studio, HomeSite+, and > CFEclipse), and in CFML itself, in functions like REFind() and REReplace(). > > > > /Charlie > > > > _____ > > From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf > Of Taco Fleur > Sent: Thursday, April 13, 2006 5:44 PM > To: [email protected] > Subject: [cfaussie] Re: RegEx brain fart > > > > thanks for the help guys, it works pretty smooth now. > > On 4/13/06, Tom Kerr <[EMAIL PROTECTED]> wrote: > > > Hrm, don't have a current CF installation to test this against, but > converting it to sed syntax worked. It should not perform replacements > on partial tag matches (as per your sometag example below). I believe > in CF you'd want: > > reReplaceNoCase( variables.htmlHighlightedContent, > "(>[^<]*)(#variables.item#)([^<]*<)", > "\1<span class='keyword'>\2</span>\3", "all" ) > > I believe that the example that you said was ok, the one you were > complaining was too slow in a seperate response, will only perform the > replacement on the last matching case of the keyword in the string, > rather than all of them as you seem to require. This is (as Blair > mentioned in his reply) because of the greedy matching nature of the .* > construct. Anybody able to confirm these two points? > > Most regex implementations have modifiers to produce a lazy .* match, > and I assume CF has the same but no idea what the syntax is. In general > I find that they complicate your expression more often than they > simplify it anyway. > > cheers, > > -T > > On Thu, Apr 13, 2006 at 04:09:59PM +1000, Taco Fleur wrote: > > this one produces output like > > > > Visual Basic/span> > > > > lets not forget that the word could also be part of a tag, i.e. > > > > <sometag> and the word searched for is "tag" > > > > > > On 4/13/06, Tom Kerr <[EMAIL PROTECTED]> wrote: > > > > > > > > > I believe that should have been ">[^<]*(#variables.item#)[^<]*<". It > > > might also break if it's possible for variables.item to contain the '<' > > > character. > > > > > > HTH. > > > > > > -T > > > > > > On Thu, Apr 13, 2006 at 02:16:16PM +1000, Taco Fleur wrote: > > > > Almost, > > > > it created the following output, which is a bit of a mess: > > > > > > > > <span style='font-family:Arial;mso-bidi-font-family: > > > > "Times New Roman"'<span class='keyword'>PHP</span>> > > > > > > > > > > > > On 4/13/06, Blair McKenzie <[EMAIL PROTECTED]> wrote: > > > > > > > > > > If you left the body tags around the content (or div or something) > > > this > > > > > regex should only select keywords that are outside of a tag's <>. > > > > > ">[^<]*(#variables.item#)[^>]*<" > > > > > > > > > > So: Select the keyword if there is no tag opening char between it > and > > > the > > > > > last tag close, and there is no tag closing char between it and the > > > next tag > > > > > open. > > > > > > > > > > > > > > > > > > > > On 4/13/06, Taco Fleur <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > > To split up the html > > > > > > > > > > > > variables.result = reFindNoCase( "<body[^>]+>(.+)</body>", > > > > > > variables.htmlContent, 1, true ); > > > > > > variables.htmlContentHeader = left( variables.htmlContent, > > > result.pos[ 2 > > > > > > ] ); > > > > > > variables.htmlContentBody = mid( variables.htmlContent, > result.pos[ > > > 2 ], > > > > > > result.len[ 2 ] ); > > > > > > variables.htmlContentFooter = right( variables.htmlContent, ( len( > > > > > > variables.htmlContent ) +1 ) - ( result.pos[ 2 ] + result.len[ 2 ] > > > )); > > > > > > > > > > > > To highlight the keyword > > > > > > > > > > > > <cfset variables.htmlHighlightedContent = reReplaceNoCase( > > > > > > variables.htmlHighlightedContent, "(#variables.item#)", "<span > > > > > > class='keyword'>\1</span>", "all" ) /> > > > > > > > > > > > > > > > > > > On 4/13/06, Blair McKenzie <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > > > > What are you using at the moment? > > > > > > > > > > > > > > > > > > > > > On 4/13/06, Taco Fleur <[EMAIL PROTECTED] > wrote: > > > > > > > > > > > > > > > > I'm drawing a blank on coming up with a regex for the > > > following; > > > > > > > > > > > > > > > > I have some HTML that I read in a variable, then I highlight > the > > > > > > > > keywords with a regex, which is fine, but some keywords might > be > > > contained > > > > > > > > within a tag, for example <html><strong> etc, I don't want to > > > highlight > > > > > > > > those, what would the regex need to look like, anyone any idea > > > on this one? > > > > > > > > > > > > > > > > thanks. > > > > > > > > > > > > > > > > -- > > > > > > > > Taco Fleur - http://www.pacificfox.com.au > > > > > > > > Web Design, Web development, Graphic Design and Complete > > > Internet > > > > > > > > Solutions > > > > > > > > an industry leader with commercial IT experience since 1994 ? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > an industry leader with commercial IT experience since 1994 ? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > Taco Fleur - http://www.pacificfox.com.au > > > > Web Design, Web development, Graphic Design and Complete Internet > > > Solutions > > > > an industry leader with commercial IT experience since 1994 ? > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > Taco Fleur - http://www.pacificfox.com.au > > Web Design, Web development, Graphic Design and Complete Internet > Solutions > > an industry leader with commercial IT experience since 1994 ? > > > > > > > > > -- > Taco Fleur - http://www.pacificfox.com.au > Web Design, Web development, Graphic Design and Complete Internet Solutions > an industry leader with commercial IT experience since 1994 . > > > ------=_NextPart_000_005F_01C65FF2.93B89630 > Content-Type: text/html; charset=utf-8 > Content-Transfer-Encoding: quoted-printable > X-Google-AttachSize: 17410 > > <html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr= > osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" = > xmlns:st1=3D"urn:schemas-microsoft-com:office:smarttags" xmlns=3D"http://ww= > w.w3.org/TR/REC-html40"> > > <head> > <meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dus-ascii"> > <meta name=3DGenerator content=3D"Microsoft Word 11 (filtered medium)"> > <!--[if !mso]> > <style> > v\:* {behavior:url(#default#VML);} > o\:* {behavior:url(#default#VML);} > w\:* {behavior:url(#default#VML);} > =2Eshape {behavior:url(#default#VML);} > </style> > <![endif]--><o:SmartTagType > namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags" name=3D"Person= > Name"/> > <!--[if !mso]> > <style> > st1\:*{behavior:url(#default#ieooui) } > </style> > <![endif]--> > <style> > <!-- > /* Font Definitions */ > @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";} > a:link, span.MsoHyperlink > {color:blue; > text-decoration:underline;} > a:visited, span.MsoHyperlinkFollowed > {color:blue; > text-decoration:underline;} > span.EmailStyle18 > {mso-style-type:personal-reply; > font-family:Arial; > color:navy;} > @page Section1 > {size:8.5in 11.0in; > margin:1.0in 1.25in 1.0in 1.25in;} > div.Section1 > {page:Section1;} > --> > </style> > > </head> > > <body lang=3DEN-US link=3Dblue vlink=3Dblue> > > <div class=3DSection1> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'>In the spirit of “teaching a man= > to > fish”, should anyone trip over RegEx problems in the future, here are= > a > few resources to help with regular expressions. <o:p></o:p></span></font></= > p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'>First, good ol’ Ben Forta came o= > ut with > a slim little book to help teach RegEx’s, in “Teach Yourself > Regular Expressions in 10 Minutes”. It’s available at Amazon at= > <a > href=3D"http://www.amazon.com/gp/product/0672325667/">http://www.amazon.com= > /gp/product/0672325667/</a>.<o:p></o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'>Second, there are various tools to help > you build RegEx’s interactively, including <o:p></o:p></span></font><= > /p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><a href=3D"http://weitz.de/regex-coach= > /">http://weitz.de/regex-coach/</a><o:p></o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><a > href=3D"http://www.regular-expressions.info/regexbuddy.html">http://www.reg= > ular-expressions.info/regexbuddy.html</a><o:p></o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'>and still more listed at places like:<= > o:p></o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><a > href=3D"http://www.larkware.com/RegexTools.html">http://www.larkware.com/Re= > gexTools.html</a><o:p></o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><a > href=3D"http://www.regular-expressions.info/">http://www.regular-expression= > s.info/</a><o:p></o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'>Still another useful tool, which is > helpful when one is searching for files having content (or names) matching a > given regex, is a free (Windows) tool called Agent Ransack (<a > href=3D"http://www.agentransack.com/">http://www.agentransack.com</a>). It&= > #8217;s > a freeware version of a commercial tool called File Locator Pro. I’ve= > blogged > more details about it before:<o:p></o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><a > href=3D"http://www.tipicalcharlie.com/a_better_file_findsearch_tool_on_wind= > ows.htm">http://www.tipicalcharlie.com/a_better_file_findsearch_tool_on_win= > dows.htm</a><o:p></o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'>But even beyond using it for finding f= > iles, > I sometimes call it up even when I’m not interested in building the R= > egEx > for use in that tool just because I like its regular expression builder.<o:= > p></o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'>Finally, for those who may wonder why = > one > would care to learn about them, regular expressions can be used in many pla= > ces, > including such file finding tools, and in editors—including Dreamweav= > er > MX, CF Studio, HomeSite+, and CFEclipse), and in CFML itself, in functions = > like > REFind() and REReplace().<o:p></o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p> > > <div> > > <p class=3DMsoNormal><font size=3D2 color=3Dnavy face=3DArial><span > style=3D'font-size: > 10.0pt;font-family:Arial;color:navy'>/Charlie</span></font><font color=3Dna= > vy><span > style=3D'color:navy'><o:p></o:p></span></font></p> > > <p class=3DMsoNormal><font size=3D3 color=3Dnavy face=3D"Times New Roman"><= > span > style=3D'font-size:12.0pt;color:navy'> </span></font><o:p></o:p></p> > > </div> > > <div> > > <div class=3DMsoNormal align=3Dcenter style=3D'text-align:center'><font siz= > e=3D3 > face=3D"Times New Roman"><span style=3D'font-size:12.0pt'> > > <hr size=3D2 width=3D"100%" align=3Dcenter tabindex=3D-1> > > </span></font></div> > > <p class=3DMsoNormal><b><font size=3D2 face=3DTahoma><span style=3D'font-si= > ze:10.0pt; > font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=3D2 > face=3DTahoma><span style=3D'font-size:10.0pt;font-family:Tahoma'> <st1:Per= > sonName > w:st=3D"on">[email protected]</st1:PersonName> [mailto:<st1:PersonN= > ame > w:st=3D"on">[email protected]</st1:PersonName>] <b><span > style=3D'font-weight:bold'>On Behalf Of </span></b>Taco Fleur<br> > <b><span style=3D'font-weight:bold'>Sent:</span></b> Thursday, April 13, 20= > 06 > 5:44 PM<br> > <b><span style=3D'font-weight:bold'>To:</span></b> <st1:PersonName w:st=3D"= > on">[email protected]</st1:PersonName><br> > <b><span style=3D'font-weight:bold'>Subject:</span></b> [cfaussie] Re: RegEx > brain fart</span></font><o:p></o:p></p> > > </div> > > <p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span style=3D= > 'font-size: > 12.0pt'><o:p> </o:p></span></font></p> > > <p class=3DMsoNormal style=3D'margin-bottom:12.0pt'><font size=3D3 > face=3D"Times New Roman"><span style=3D'font-size:12.0pt'>thanks for the he= > lp guys, > it works pretty smooth now.<o:p></o:p></span></font></p> > > <div> > > <p class=3DMsoNormal><span class=3Dgmailquote><font size=3D3 face=3D"Times = > New Roman"><span > style=3D'font-size:12.0pt'>On 4/13/06, <b><span style=3D'font-weight:bold'>= > Tom Kerr</span></b> > <<a href=3D"mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>> = > wrote:</span></font></span> > <o:p></o:p></p> > > <p class=3DMsoNormal style=3D'margin-bottom:12.0pt'><font size=3D3 > face=3D"Times New Roman"><span style=3D'font-size:12.0pt'><br> > Hrm, don't have a current CF installation to test this against, but<br> > converting it to sed syntax worked. It should not perform > replacements <br> > on partial tag matches (as per your sometag example below). I > believe<br> > in CF you'd want:<br> > <br> > reReplaceNoCase( variables.htmlHighlightedContent,<br> > "(>[^<]*)(#variables.item#)= > ([^<]*<)", > <br> > "\1<span > class=3D'keyword'>\2</span>\3", "all" )<br> > <br> > I believe that the example that you said was ok, the one you were<br> > complaining was too slow in a seperate response, will only perform the <br> > replacement on the last matching case of the keyword in the string,<br> > rather than all of them as you seem to require. This is (as Blai= > r<br> > mentioned in his reply) because of the greedy matching nature of the .*<br> > construct. Anybody able to confirm these two points? <br> > <br> > Most regex implementations have modifiers to produce a lazy .* match,<br> > and I assume CF has the same but no idea what the syntax is. In > general<br> > I find that they complicate your expression more often than they <br> > simplify it anyway.<br> > <br> > cheers,<br> > <br> > -T<br> > <br> > On Thu, Apr 13, 2006 at 04:09:59PM +1000, Taco Fleur wrote:<br> > > this one produces output like<br> > ><br> > > Visual Basic/span><br> > ><br> > > lets not forget that the word could also be part of a tag, i.e.<br> > ><br> > > <sometag> and the word searched for is "tag"<br> > ><br> > ><br> > > On 4/13/06, Tom Kerr <<a href=3D"mailto:[EMAIL PROTECTED]">tjke= > [EMAIL PROTECTED]</a>> > wrote:<br> > > ><br> > > ><br> > > > I believe that should have been > ">[^<]*(#variables.item#)[^<]*<". It<br> > > > might also break if it's possible for variables.item to contain t= > he > '<'<br> > > > character. <br> > > ><br> > > > HTH.<br> > > ><br> > > > -T<br> > > ><br> > > > On Thu, Apr 13, 2006 at 02:16:16PM +1000, Taco Fleur wrote:<br> > > > > Almost,<br> > > > > it created the following output, which is a bit of a mess: <= > br> > > > ><br> > > > > <span style=3D'font-family:Arial;mso-bidi-font-family:<br> > > > > "Times New Roman"'<span > class=3D'keyword'>PHP</span>><br> > > > ><br> > > > > <br> > > > > On 4/13/06, Blair McKenzie <<a href=3D"mailto:[EMAIL > PROTECTED] > l.com">[EMAIL PROTECTED]</a>> > wrote:<br> > > > > ><br> > > > > > If you left the body tags around the content (or div or > something) <br> > > > this<br> > > > > > regex should only select keywords that are outside of a= > tag's > <>.<br> > > > > > ">[^<]*(#variables.item#)[^>]*<"<= > br> > > > > ><br> > > > > > So: Select the keyword if there is no tag opening char > between it and <br> > > > the<br> > > > > > last tag close, and there is no tag closing char betwee= > n it > and the<br> > > > next tag<br> > > > > > open.<br> > > > > ><br> > > > > ><br> > > > > > <br> > > > > > On 4/13/06, Taco Fleur <<a > href=3D"mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>> wrote:<br> > > > > > ><br> > > > > > > To split up the html<br> > > > > > > <br> > > > > > > variables.result =3D reFindNoCase( > "<body[^>]+>(.+)</body>",<br> > > > > > > variables.htmlContent, 1, true );<br> > > > > > > variables.htmlContentHeader =3D left( > variables.htmlContent,<br> > > > result.pos[ 2<br> > > > > > > ] );<br> > > > > > > variables.htmlContentBody =3D mid( > variables.htmlContent, result.pos[<br> > > > 2 ],<br> > > > > > > result.len[ 2 ] );<br> > > > > > > variables.htmlContentFooter =3D right( > variables.htmlContent, ( len(<br> > > > > > > variables.htmlContent ) +1 ) - ( result.pos[ 2 ] + > result.len[ 2 ]<br> > > > )); <br> > > > > > ><br> > > > > > > To highlight the keyword<br> > > > > > ><br> > > > > > > <cfset variables.htmlHighlightedContent =3D > reReplaceNoCase(<br> > > > > > > variables.htmlHighlightedContent, > "(#variables.item#)", "<span<br> > > > > > > class=3D'keyword'>\1</span>", > "all" ) /><br> > > > > > ><br> > > > > > > <br> > > > > > > On 4/13/06, Blair McKenzie <<a > href=3D"mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>> wrote:<br> > > > > > > ><br> > > > > > > > What are you using at the moment? <br> > > > > > > ><br> > > > > > > ><br> > > > > > > > On 4/13/06, Taco Fleur <<a > href=3D"mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a> > wrote:<br> > > > > > > > > <br> > > > > > > > > I'm drawing a blank on coming= > up > with a regex for the<br> > > > following;<br> > > > > > > > ><br> > > > > > > > > I have some HTML that I read in a variab= > le, > then I highlight the <br> > > > > > > > > keywords with a regex, which is fine, but > some keywords might be<br> > > > contained<br> > > > > > > > > within a tag, for example > <html><strong> etc, I don't want to <br> > > > highlight<br> > > > > > > > > those, what would the regex need to look > like, anyone any idea<br> > > > on this one?<br> > > > > > > > ><br> > > > > > > > > thanks. <br> > > > > > > > ><br> > > > > > > > > --<br> > > > > > > > > Taco Fleur - <a > href=3D"http://www.pacificfox.com.au">http://www.pacificfox.com.au</a><br> > > > > > > > > Web Design, Web development, Graphic Des= > ign > and Complete <br> > > > Internet<br> > > > > > > > > Solutions<br> > > > > > > > > an industry leader with commercial IT > experience since 1994 ?<br> > > > > > > > ><br> > > > > > > > > <br> > > > > > > > ><br> > > > > > > > ><br> > > > > > > > ><br> > > > > > > ><br> > > > > > > ><br> > > > > > > ><br> > > > > > > > an industry leader with commercial IT experie= > nce > since 1994 ? <br> > > > > > > ><br> > > > > > > ><br> > > > > > > ><br> > > > > > > ><br> > > > > > ><br> > > > > ><br> > > > > > ><br> > > > > > <br> > > > ><br> > > > ><br> > > > > --<br> > > > > Taco Fleur - <a href=3D"http://www.pacificfox.com.au">http:/= > /www.pacificfox.com.au</a><br> > > > > Web Design, Web development, Graphic Design and Complete > Internet <br> > > > Solutions<br> > > > > an industry leader with commercial IT experience since 1994 = > ?<br> > > > ><br> > > > ><br> > > > ><br> > > ><br> > > > ><br> > > ><br> > ><br> > ><br> > > --<br> > > Taco Fleur - <a href=3D"http://www.pacificfox.com.au">http://www.pacif= > icfox.com.au</a><br> > > Web Design, Web development, Graphic Design and Complete Internet > Solutions<br> > > an industry leader with commercial IT experience since 1994 ? <br> > ><br> > ><br> > ><br> > <br> > <br> > -- <br> > Taco Fleur - <a href=3D"http://www.pacificfox.com.au">http://www.pacificfox= > .com.au</a> > <br> > Web Design, Web development, Graphic Design and Complete Internet Solutions= > <br> > an industry leader with commercial IT experience since 1994 … <br> > > </div> > > </div> > > </body> > > </html> > > ------=_NextPart_000_005F_01C65FF2.93B89630-- --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "cfaussie" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cfaussie -~----------~----~----~----~------~----~------~--~---
