Thanks for the tutorial Max. Stuart
> ------------Original Message------------ > From: "Maxim Olivier-Adlhoch" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Date: Thu, Apr-29-2004 7:51 PM > Subject: [REBOL] Re: Parsing out strings > > > by using left right mid mentality... > > use COPY and AT > > so here we go: > > with > > str: "the user jsmith logged in at 4.30pm" > > > > 1. "the user" > copy/part str 8 > > > > 2. "the user jsmith" > copy/part str 15 > > > > 3. "jsmith" > copy/part at str 10 6 > > > > 4. "jsmith logged in at 4.30pm" > copy at str 10 > > > > 5. "logged in at 4.30pm" > copy at str 17 > > > now I'd say that there is a good chance that there is a better "SOLUTION" to the > problem, given a better problem description. > > if the ordering of the log file is extremely constant or if some words always > describe the following data, then I'd rather do: > > blk: parse/all str " " > > >> user: third blk > == "jsmith" > > > > >> priviledge: select blk "the" > == "user" > > > >> user: select blk priviledge > == "jsmith" > > > >> time: to-time replace select blk "at" "." ":" > == 16:30 > > > > >> action: pick intersect blk ["print" "mailed" "logged" "browsed"] 1 > == "logged" > > I used pick, in case no matching action was found, in wich case the word 'first > would crash, whereas 'pick returns none instead. > > > >> sub-action: select blk first action > == "in" > > here again, if the select fails, then select returns none. > > > now if we replace the string by: > > "the sysadmin root mailed fred at 9.00am" > > then all the rules still hold, yet the copy/all code earlier, becomes completely > useless... you see in rebol, the problem is not in solving but in analysis. > analysing the data patterns. By doing thid properly (and knowing a few rebol > words), rebol's expressive power can be fully harnessed. > > > extending the above could be that the user name is optional, like so: > > str: "the sysadmin mailed fred at 9.00am" > > > The following expression would return a default user if none was given: > > users: ["root" "mary" "john"] > blk: parse/all str " " > > priviledge: select blk "the" > > user: either (offset: find users select blk priviledge) [ > first offset > ][ > select ["user" "guest" "sysadmin" "root"] priviledge > ] > > > > have fun :-) > > HTH!!!! > > -MAx > --- > "You can either be part of the problem or part of the solution, but in the end, > being part of the problem is much more fun." > > > > -----Original Message----- > > From: ML [mailto:[EMAIL PROTECTED] > > Sent: Thursday, April 29, 2004 5:56 PM > > To: [EMAIL PROTECTED] > > Subject: [REBOL] Parsing out strings > > > > > > > > I am pretty new to REBOL and am having a bit of trouble > > getting my head around how to parse out strings from lines I > > am reading in from session logs. > > > > I am looking at "clear find" and "remove/part" and things > > like this but I am getting very confused as to what to use > > when, I am more of a left$, mid$, right$ kind of guy. > > > > Perhaps I can illustrate. > > > > Suppose the line I am parsing says: > > "the user jsmith logged in at 4.30pm" > > > > Can you give me a clue what I would use to parse in each of > > these circumstances where the desired text is: > > > > 1. "the user" > > 2. "the user jsmith" > > 3. "jsmith" > > 4. "jsmith logged in at 4.30pm" > > 5. "logged in at 4.30pm" > > > > Obviously the jsmith part would change for each line so the > > parsing out would need to probably base it on looking for > > "the user " and then looking for the next space after that > > which should be after the name. > > > > Anyone give me a clue? > > > > Thanks > > > > Stuart > > > > -- > > To unsubscribe from this list, just send an email to > > [EMAIL PROTECTED] with unsubscribe as the subject. > > > > > > -- > To unsubscribe from this list, just send an email to > [EMAIL PROTECTED] with unsubscribe as the subject. > > > > -- To unsubscribe from this list, just send an email to [EMAIL PROTECTED] with unsubscribe as the subject.