Thanks for the info about regex. I bookmarked the website and will be using your advice. I am pretty new to regex and even though I’ve spent a lot of time researching it you have helped me tremendously.
John Balgenorth On Aug 9, 2014, at 8:15 PM, Kay C Lan <lan.kc.macm...@gmail.com> wrote: > On Sun, Aug 10, 2014 at 9:08 AM, JB <sund...@pacifier.com> wrote: >> One of the things I am interested in seeing more handlers >> and examples is regex. It seems to be a very powerful >> tool with very few LiveCode examples. > > The matchChunk and matchText functions are pretty straight forward to > use, it's building the regex that can be difficult if you don't live > with it regularly. If what you really need is examples of regex then I > highly recommend this online regex builder: > > http://regex101.com/#pcre > > The thing I like about it is that you can choose the 'Flavor' of regex > it uses, so unlike other online regex builders that use Javascript, > you can choose the same library that Livecode uses: PCRE. So if it > works on this site it should work in LC. > > Even better, if you click on the Community tab at the top of the page > it will present you with a list of 100s and 100s of community provided > examples of regex, explains what they do, and it's as simple as copy > and paste into your matchChunk or matchText function to test in LC. > > I will warn you though of one gotcha that is easy to trip on if you're > an occasional user of regex + LC. The standard matchText function > looks like this: > > matchTex(yourDataVar,"regex(capturethis)expression",yourCapturedVar) > > so any matches within () will be placed in your variable place holder. > > In regex the | character is used as OR > > so you might be looking for lowercase jpg file names, but you want > just the name, not the extension: > > ([a-z]+)\.jpg will work, but not if you also have some with a jpeg extension. > > ([a-z]+.jpeg will work for those, so these could be combined with the > | identifier: > > ([a-z]+)\.jpg|([a-z]+)\.jpeg > > Now I appreciate the regex experts will point out there is a much > better way to solve this problem than using |, but the point of this > is, if you use | in your regex, and place it in matchText or > matchChunk, you no longer have a single placeholder, so your matchText > function has to be amended accordingly: > > matchText(yourDataVar,"([a-z]+)\.jpg|([a-z]+)\.jpeg",myJpgFile,myJpegFile) > > It is easy, when copying regex off such sites listed above, or > building your own, and you know you are only finding x number of data > bites, to assume that that is how many capture variables you need, but > if OR is used, then you can easily end up needing double or triple the > number of variables. > > Rule of thumb, always count the number of capturing () in the regex > and ensure you have the same number of allocated capturing variables. > > HTH > > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode > _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode