Re: Regular Expression Problem
On Wed, May 21, 2003 at 02:20:46PM -0700, Mike Fedyk wrote:
> > > set reply_regexp = "^([[]?(re|aw|fwd|fw):[ \t]+)*(.*[]])?)?"
> >
> > Wouldn't you need to escape the [] characters? Try: \[ and \].
>
> No, strangely enough, mutt's regexes don't like \[ and \], but the do like
> [[] and []].
That'd be "match a character class that contains [" for the first one and
the second one is "match a character class that contains ]". Hmm.
For my own sanity I'm going to write out what the above matches.
^ Start with
( a group that contains
[[] an optional character class of "["
( then another group that contains
re|aw|fwd|fw one of: re or aw or fwd or fw
) end of the "re" group
: followed by ":"
[ \t] then a character class that matches AT LEAST one space or tab
)* end of the "[re: " bit. Which may appear zero or more times.
( new group that is optional and contains
.* zero or more characters
[]] followed by a required ]
) end of the group which contains "any character and ends with ]"
) end a group that...there's no start for this group!
Ok, you have more close than open brackets. This will be a problem. Also:
your entire regular expression is optional...
()*()?
Shouldn't there be at least some part that's required? Like "at least re
or aw or fwd or fw"...For that you'd add another group. In very simplied
terms:
([)*(re|fwd|fw)+(])*
an optional [
at least one "re|fwd|fw"
with an optional ending ]
> Won't the regular expressions stop once it finds a match? So if it matches
> on:
regular expressions are greedy. They will try to match as much as they
possibly can.
> [fwd: abc
> with "^([[]?(re|aw|fwd|fw):[ \t]+)*"
> won't it stop trying to match if you have:
> "^([[]?(re|aw|fwd|fw):[ \t]+)*|(.*[]])?)$"
> hmm? So it still wouldn't match the last "]". :(
Why do you have the "or" in there?
> I'm trying to match two outer parts of a string, without matching the center
> part between the two outter parts. Any new ideas would be helpful.
I usually find and end part with something like this:
[^endpattern]+
i.e. as long as you're NOT my character class keep going. (must find at
least one character that is not your character class -- which creates the
"middle"ness)
--
Emma Jane Hogbin
[[ 416 417 2868 ][ www.xtrinsic.com ]]
Reply to: