Clarion in general: Finding end position of a StrPos search using Regular Expressions
2004-06-16 -- Michael Ware
Newsgroups: softvelocity.clarion.language
I finally got a chance to play with this. The following function will
return the match length:
STRPOSLEN PROCEDURE(STRING sTEXT,STRING sEXP)
X LONG
StartPos LONG
MatchLen LONG
CODE
StartPos = STRPOS(sTEXT,sEXP)
MatchLen = 0
IF StartPos
LOOP X = 1 TO (LEN(sTEXT) - StartPos)
IF STRPOS(sub(sTEXT,StartPos, X),sEXP)
MatchLen = x
END
UNTIL MatchLen
END
RETURN (MatchLen)
-Mike
"Bert Janssen" wrote in message
news:1_134_1575@discuss.softvelocity.com...
>
> Hi Frank,
>
> Your solution work fine when the exact string to search is known. Since I
need
> to use regular expressions this is not the case.
>
> Example:
>
> Sentence 1: The tree is green.
> Sentence 2: The tree is blue and green.
>
> Suppose I need to find the part between 'ee' and 'een' (this can be done
using RE)
>
> Sentence 1 would return 'ee is green'
> Sentence 2 would return 'ee is blue and green'
>
> STRPOS only returns the start of 'ee' =6 not the (variable) end position
of 'een'.
>
> Regards,
>
> Bert Janssen
> Océ Translation Services
> http://www.oce.com
>
>
> On Fri, Jun 11 2004, "Frank Vestjens" said:
> >Bert,
> >
> >> Clarion STRPOS regular expressions returns the starting point of where
> >your
> >> expression matches. However if I need to replace this part I also need
to
> >know
> >> how long the found part is. The length of the found part depends on the
> >string,
> >> so it's not always the same.
> >>
> >> Does anyone have a solution?
> >
> >Try this:
> >
>
>!==========================================================================
=
> >=
> >!PURPOSE : Replace Sequence Inside String
> >!SYNOPSIS: StrReplace(OriginalString, SequenceToReplace, ReplaceWith)
>
>!==========================================================================
=
> >=
> >StrReplace PROCEDURE(OrgString, ToSearch, ReplaceWith)
> >
> >Pos LONG(1)
> >
> > CODE
> > LOOP
> > Pos = INSTRING(ToSearch,OrgString,1,Pos)
> > IF ~Pos THEN RETURN.
> >
> > OrgString = OrgString[1 : Pos-1] & ReplaceWith & OrgString[Pos +
> >LEN(ToSearch) : LEN(OrgString)]
> > Pos = Pos + LEN(ReplaceWith)
> > END
> >
> >Regards,
> >
> >Frank Vestjens
> >InforIT bv
> >
> >
> >
>
Printed November 21, 2024, 11:56 am
This article has been viewed/printed 35239 times.
Google search
has resulted in 296 hits on this article since January 25, 2004.