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