On Wed, Oct 3, 2012 at 11:37 PM, Ben Fritz <[email protected]> wrote:
> On Wednesday, October 3, 2012 9:05:14 AM UTC-5, Xell Liu wrote:
>> Hi all,
>>
>> Sorry for the previous mail where my ambiguous expression led to a
>>
>> somewhat time-wasting discussion. Thanks for the guys who tried to
>>
>> help.  Here is the rephrased version.
>>
>>
>>
>> I what to use command :match to highlight some text, which is
>>
>> free-form and thus can not be enumerated.  The text is always
>>
>> surrounded by a pair of "==".  I need a regex to match the text.
>>
>>
>>
>> In the following example, what I want to be highlighted is "aaa" and "bbb"
>>
>>
>>
>> xxx==aaa==cccddd==bbb==yyy
>>
>>
>>
>> In the following example, what I want is "a", "c", "e" and "g"
>>
>>
>>
>> x==a==b==c==d==e==f==g==y
>>
>>
>>
>
> Ok...so you want all "even numbered" things surrounded by ==, correct?
>
> So you have:
>
> {beginning of line}{possible text not to match}=={text to match}=={text not 
> to match}=={text to match}==...
>
> This seems to work for me:
>
> \%(^\|[^=]*==[^=]*==\)\@<=[^=]*==\zs[^=]*\ze==
>
> The trick here is that I match only at positions where either the beginning 
> of the line, or a previous non-match/match pair precede the match.
>
> Probably this pattern could be made simpler but I wasn't able to find a 
> simpler one quickly. The /\@<= is special because unlike \zs, as noted in the 
> :help, "the part of the pattern after '\@<='...[is]...checked for a match 
> first", so I couldn't just drop it and use the \zs by itself.
>
> By the way, you still haven't said what task you're trying to accomplish, 
> beyond that you want to use :match. If syntax highlighting with :syn match 
> would work for you instead, probably the easiest way to highlight these would 
> be using the full ==...== string, and pattern offsets. :he :syn-pattern-offset
>
> --

Hi Fritz,

Thanks very much for the solution and, especially, for the shift in
thinking -- I couldn't notice the "even numbered" thing.  And your
practical  example of using the \@<= teaches me even more.

As to the "task beyond the :match", hmm, I did have something further
and off-topic to do (and I already knew the syn-pattern-offset of
syntax highlight).  However, I just saw the regex difficulty as a pure
"technical" challenge and hoped to learn something from it. Now I did
:-)

Best,
Xell

-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Reply via email to