Sorry, in my previous post I did not consider nested parens (I was thinking
English text, not C code). The function below should return the offset of the
outermost closing paren, the "match" for the first opening paren.
function offsetPair a,b,str
-- returns offset(a,str) and loads in z offset(b,str) where b is the
"matching" member of the pair;
-- returns 0 if there is no a, empty if there is no match
-- offsets(b,str) returns a comma-delimited list of all the offsets
-- of a in str (see below)
put offsets(a,str) into startOffsets
if startOffset = 0 then return 0
put offsets(b,str) into endOffsets
if endOffsets = 0 then return empty
if the number of items of startOffsets <> the number of items of endOffsets
then
-- unmatched parens, not grammatical
return empty
end if
put item -1 of endOffsets into lastCloseParen
if lastCloseParen < item 1 of startOffsets then return empty
-- right number of open + close parens
-- but not grammatical
return item -1 of endOffsets
end offsetPair
-- Peter
Peter M. Brigham
[email protected]
http://home.comcast.net/~pmbrig
On Jul 26, 2013, at 1:35 AM, Mark Wieder wrote:
> Geoff-
>
> Thursday, July 25, 2013, 9:53:47 PM, you wrote:
>
>> regex is notoriously unable to handle recursion. To see endless heated
>> debate, search the web for how to parse HTML using regex.
>
> To be fair, the blame is mostly on HTML, not regex. But there's enough
> blame to go around. No worries.
>
>> Here is a fairly short function that searches for the outermost matched
>> pairs of characters.
>
> "outermost" is different from matched. You might want to find the
> matching parenthesis for "lineDelim()" in
>
> put stripHTML(
> url("http:://www.www.com"),
> lineDelim("/n"
> ),
> cos(theta)
> )
>
> --
> -Mark Wieder
> [email protected]
>
>
> _______________________________________________
> use-livecode mailing list
> [email protected]
> Please visit this url to subscribe, unsubscribe and manage your subscription
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
_______________________________________________
use-livecode mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode