Matchtext for multiple words
J. Landman Gay
jacque at hyperactivesw.com
Wed Nov 29 20:20:20 EST 2006
John Craig wrote:
> -- build the whole damn regex
LOL! I know exactly what you mean. I'll test this. I'm building a test
suite of all the responses and will report here what I find. So far, I'm
surprised at the results.
I'm kind of pleased with this whole thread. Scripting contests are cool.
We should make it a monthly affair.
> And a script to create the regex from a word list. My apologies if this
> stuff turns out useless - but you can get absorbed in this mince...
>
>
> on mouseUp
> -- string to search * SHOULD MATCH
> put "The purple dinosaur inadvertently stepped on the cat." & return &
> "The white dog howled." into tString
>
> -- DUFF string to search ** SHOULD NOT MATCH
> put "The purple dinosaur inadvertently stepped on the cat." & return &
> "The white dinosaur howled." into tString2
>
> -- words to find
> put "cat,dinosaur,dog" into tWords
>
> -- build the pattern to match the words
> put "(" into tWordsPattern
> repeat for each item tWord in tWords
> put tWord & "|" after tWordsPattern
> end repeat
> put ")" into char -1 of tWordsPattern
>
> -- build the whole damn regex
> put num of items in tWords into tTotalWords
> put 0 into tCurrentWord
> put "(?is)" into tRegex
> repeat for each item tWord in tWords
> add 1 to tCurrentWord
> put "\b" after tRegex
> if tCurrentWord > 1 then
> put "(?!" after tRegex
> repeat with i = 1 to tCurrentWord - 1
> put "\" & i & "|" after tRegex
> end repeat
> delete char -1 of tRegex
> put ")" after tRegex
> end if
> put tWordsPattern & "\b" after tRegex
> if tCurrentWord < tTotalWords then
> put ".*" after tRegex
> end if
> end repeat
>
> -- test our regex against the 2 test strings
> put matchText(tString, tRegex) & return & matchText(tString2, tRegex)
>
> end mouseUp
>
>
> John Craig wrote:
>> I still think it's working ok - someone slap me if I'm wrong.
>> The (?! is looking ahead and saying 'you can't begin with.
>>
>> (?!\1) - you can't begin with the first match
>> (?!\1|\2) - you can't begin with the 1st or second match
>>
>> JC
>>
>> J. Landman Gay wrote:
>>> Sorry if this comes through twice, I'm having trouble sending to the
>>> list.
>>>
>>> I need a matchtext/regex that will tell me if all supplied words
>>> exist in a block of text, regardless of their order, and ignoring
>>> carriage returns.
>>>
>>> For example, see if all these words: dog dinosaur cat
>>>
>>> exist in this text:
>>>
>>> "The purple dinosaur inadvertently stepped on the cat.<cr>
>>> The white dog howled."
>>>
>>> Should return true. Is there such a thing?
>>>
>>
>> _______________________________________________
>> use-revolution mailing list
>> use-revolution at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>
--
Jacqueline Landman Gay | jacque at hyperactivesw.com
HyperActive Software | http://www.hyperactivesw.com
More information about the use-livecode
mailing list