RegEx Help
Ken Ray
kray at sonsothunder.com
Wed Aug 7 02:54:00 EDT 2002
Here you go... it assumes that each line will end either with the "see
[also]" reference (in the case of #1, #2, #3 and #5) or will end the line
with the "see [also]" reference and a close parentheses (in the case of #4).
----------------------------------
on mouseUp
local c1,c2,c3,c4
put "" into tNewFile
repeat for each line tLine in fld "tText"
put true into foundIt
if matchText(tLine,"(see also|see) (.*?)[\)]?$") then
-- ends in paren, keep it
get matchChunk(tLine,"(see also|see) (.*?)[\)]?$",c1,c2,c3,c4)
else
put false into foundIt
end if
if foundIt then
put (char 1 to (c3-1) of tLine) & "<I>" & (char c3 to c4 of tLine) & \
"<$>" & char (c4+1) to length(tLine) of tLine & cr after tNewFile
else
put "no match" & cr after tNewFile -- just in case
end if
end repeat
-- clean up and rest of code here
end mouseUp
----------------------------------
Basically it looks for "see also" or "see", followed by a space and then
grabs all text after that until it reaches the end of the text (indicated by
the $ at the end of the regex), optionally followed by 0 or more close
parentheses (indicated by the [\)]? in the regex).
Ain't PCRE great! :-)
Enjoy!
Ken Ray
Sons of Thunder Software
Email: kray at sonsothunder.com
Web Site: http://www.sonsothunder.com/
----- Original Message -----
From: "Sivakatirswami" <katir at hindu.org>
To: <metacard at lists.runrev.com>
Sent: Tuesday, August 06, 2002 6:04 PM
Subject: RegEx Help
> [was re: Setting Itemdelimiter to multiple character string]
>
> Ken Ray wrote:
>
> > I would suggest using regular expressions instead of item delimiters for
> > this. MC 2.4.3's support for PCRE is awesome. If you need some help on
this,
> > let me know.
>
> Well I solved this by swopping out the string for a "|" character,
> processing the items and then swopping the string back in. Turned out to
be
> very simple. But, your generous offer cannot be turned down as PCRE is
> indeed "awesome" (our young wizard in the next room back flipped over to
my
> desk just now to gush about what he had just done with grep in BBEdit...
> So... RegEx is in the air!) and I would like to see if you have a better
> method. Here the script, it would be interesting to see if a grep string
> could be made that would pick up all 5 formats.
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ## Summary of formats from Chamundi's list
> ## Goal is: wrap all subsequent text with Quark italic tags
>
> #1: Text string ending with ": See " and one or more words/phrases
> #2: Tab followed by "See also " and one or more words/phrases
> #3: Text string ending with ", see " and one or more words/phrases
> #4: Text string ending with " (see also ", one or more
> words/phrases,end-paren
> #5: Text string ending with ". See also " and one or more words/phrases
>
> on mouseup
> set the casesensitive to true
> put fld "tText" into tOldFile
>
> ## change itemdelimiter now for all routines
>
> set the itemDelimiter to "|"
>
> ## Now read each line of the data
> ## and process the different five formats if found in that line
>
> repeat for each line x in tOldFile
>
> ## Format 1 -- Text string ending with ": See " and one or more
> words/phrases
>
> if x contains ": See" then
> replace ": See" with "|" in x
> put "<I>" before item 2 of x
> put "<$>" after item 2 of x
> replace "|" with ": See" in x
> end if
>
>
> ## Format 2 : Tab followed by "See also " and one or more
words/phrases
>
> put tab & "See also" into tabbed_entry
>
> if x contains tabbed_entry then
> replace "See also" with "|" in x
> put "<I>" before item 2 of x
> put "<$>" after item 2 of x
> replace "|" with "See also" in x
>
> end if
>
> #3: Text string ending with ", see " and one or more words/phrases
>
> if x contains ", see " then
> replace ", see " with "|" in x
> put "<I>" before item 2 of x
> put "<$>" after item 2 of x
> replace "|" with ", see " in x
> end if
>
>
> #4: Text string ending with " (see also ", one or more
> words/phrases,end-paren
>
> if x contains " (see also " then
> replace " (see also " with "|" in x
> put "<I>" before item 2 of x
> put "<$>" before last char of item 2 of x ## don't italicize right
> parenthesis mark
> replace "|" with " (see also " in x
> end if
>
> #5: Text string ending with ". See also " and one or more
words/phrases
>
> if x contains ". See also " then
> replace ". See also " with "|" in x
> put "<I>" before item 2 of x
> put "<$>" after item 2 of x
> replace "|" with ". See also " in x
> end if
>
> ## post the data to the new variable with a return
>
> put x & cr after tNewFile
> end repeat
>
> ## clean up garbage, double spaces, double commas, dangling commas etc
>
> put cleanUpText(tNewFile) into tNewFile
>
> ## Post the variable to a GUI field
>
> if the hilite of btn "Preserve Data" = "true" then
> put tNewFile into fld "output"
> set the hilite of btn "Output" to true
> set the vis of fld "output" to true
> else
> put empty into fld tText
> wait 20 ticks
> put tNewFile into fld ttext
> end if
>
> end mouseup
>
>
>
>
>
> Om shanti,
> Hinduism Today
>
> Sivakatirswami
> Editor's Assistant/Production Manager
> katir at hindu.org
> www.HinduismToday.com, www.HimalayanAcademy.com,
> www.Gurudeva.org, www.hindu.org
>
> Read The Master Course Lesson of the Day at
> http://www.gurudeva.org/lesson.shtml
>
> _______________________________________________
> metacard mailing list
> metacard at lists.runrev.com
> http://lists.runrev.com/mailman/listinfo/metacard
>
More information about the metacard
mailing list