Thanks for replying. The examples you gave me has help me to understand the command. I may not every use it.
Thanks for the info Michael --- Tim Chase <[EMAIL PROTECTED]> wrote: > > Would someone please explain the usage of @=. I am getting > > confuse from the help file. > > > > [EMAIL PROTECTED] Matches the preceding atom with zero width. {not in Vi} > > Like "(?=pattern)" in Perl. > > Example matches ~ > > foo\(bar\)[EMAIL PROTECTED] "foo" in "foobar" > > foo\(bar\)[EMAIL PROTECTED] nothing > > > > > > To me, the second example matches nothing because there is > > no foo in between the \( and \) > > > > The first example, I am all confused. If someone can > > enlighten me, I would be greatful. > > The pattern > > \(...\)[EMAIL PROTECTED] > > is interpreted as "make sure that this matches here, but don't > consume any of the characters so that things after the '=' begin > at the same point as this". > > In the first example, as stated it matches the "foo" in "foobar" > because the "bar" can be found after the "foo", but it doesn't > become part of the match. To see this as you're playing around, > it's helpful to have > > :set hls > > so you can see what matches. > > In the second example, the regexp is asking for two disjoint > things: "foo" followed by "bar" and also followed by a second > "foo". It might be more clear if "foo" wasn't used twice: > > /foo\(bar\)[EMAIL PROTECTED] > > This would match nothing as well, as it asks for "foo" followed > immediately by "bar" as well as "foo" followed immediately by "fred". > > For most uses, this isn't very helpful and can be more clearly > expressed as > > /foo\zebar > > where the "\ze" means "and I want the pattern to stop matching here". > > I can concoct crazy uses for the "[EMAIL PROTECTED]" where it might be useful > but most of them are refactorable: > > /foo\([[:print:]]+\)[EMAIL PROTECTED] > > could become > > /foo[a-z]\ze[[:print:]]* > > One could also use it for crazy filtering: > > /foo\(\%(.[aeiou]\)\{5}\)[EMAIL PROTECTED] > > This would ensure that you have five pairs of "word-characters > (\w) followed by a vowel" following "foo", and that the 4th > letter following foo is an "a". The above could be written > without using "[EMAIL PROTECTED]" as something ilke > > /foo\w[aeiou]\wa\w[aeiou]\w[aeiou]\w[aeiou] > > Readability is in the eye of the beholder. :) With 2 characters > times 5 instances plus 3+1+6, they balance out to about the same. > As those numbers get larger, using the [EMAIL PROTECTED] notation might > prove > more helpful. > > This allows you to do some pattern intersection (in the > set-theory definition of "intersection") which might allow you to > shorten the pattern if you have long stretches of things. It > might be helpful in DNA sequencing or something of the like, > where one is hunting for certain patterns of A/C/G/T and want to > ensure that a certain repeating pattern exists, and then at a > certain point in that pattern a given item is more constrained. > One might have an alternating sequence where you know you want > something like "agct" followed by 75 alternating pairs > > /agct\(\%([at][cg]\)\{75,}\)[EMAIL PROTECTED] > > You can then tack on "but position 28 through 30 must be 'gag'" > (I might be off-by-one here) > > /agct\(\%([at][cg]\)\{75,}\)[EMAIL PROTECTED](.\{27}gag\)[EMAIL > PROTECTED] > > The result will only be the "agct", but it will be followed by > the context you need, as there might be many other instances of > "agct" that you don't care about because they lack this context. > > (the genetics example chosen as I've seen a couple > genetics-searching related questions on the list) > > As cautioned, they're fairly contrived instances, but I hope the > above ramblings shed more light than they bewilder, and that > using ":set hls" helps see what's considered when using the "[EMAIL > PROTECTED]". > > -tim > > > > > Michael D. Phillips - A computer science enthusiast I do not hate Windows, I just like the alternatives better. Linux is my primary choice. ____________________________________________________________________________________ Food fight? Enjoy some healthy debate in the Yahoo! Answers Food & Drink Q&A. http://answers.yahoo.com/dir/?link=list&sid=396545367