Friday, April 20, 2012

Re: matchend() and \zs

On Friday, April 20, 2012 8:51:37 PM UTC+2, Ben Fritz wrote:
> On Friday, April 20, 2012 11:30:02 AM UTC-5, rameo wrote:
> > On Friday, April 20, 2012 5:52:37 PM UTC+2, Ben Fritz wrote:
> > > On Friday, April 20, 2012 2:45:28 AM UTC-5, rameo wrote:
> > > >
> > > > After all these match() and matchend() problems, I'm trying to view if matches can be captured by using the submatch(0) and adding them to a register.
> > > > Isn't this a bit dangerous because you have to return the submatch (in order to left the buffertext unchanged)?
> > > > However I tested that it captures all matches whatever the regex is.
> > >
> > > submatch() only works inside a substitute() call or inside a :substitute command (:help sub-replace-expression). It says this explicitly in :help submatch(). In the future, please read the help topics on the functions you are using before posting to the list.
> > >
> > > In order to use the matched text, you can try matchstr() or matchlist() instead. Again, had you read the help for match(), you would have been directed to these functions.
> >
> > yes Ben,
> > What do you think that I haven't read the help?
> > I know that submatch() works only in a substitute command but that was not my question.
> > I asked if it is a bit dangerous to use submatch() to capture matches because it does a substitute in the text. However it seems to capture all, whatever regex.
> >
> > And I've read also about match(), but not everything is so easy for me as it is for you as you are a longtime user ;)
>
> My apologies, I must have misunderstood your question about submatch(). I thought you had not read the help because:
>
> 1. I thought you were trying to use submatch() with a match() or matchend() call, since you did not mention using substitute()
> 2. You did not seem aware of the optional 4th argument to match() and matchend() which is documented in the help
> 3. You did not seem aware of matchstr() or matchlist(), which are linked from the help topic for match()
>
> submatch() does not do any substitute by itself. It is as way to access a captured group in the replace text for a regular expression applied using the substitute() function, or the :substitute command, either of which can be manipulated to not actually make any textual changes.

No problem.
ad 1) yes you're right I didn't mention it but I thought it was clear that I mentioned submatch() as alternative of match(),matchend()
ad 2) you're right. I was not aware of the 4th argument to match() and matchend()
ad 3) I know them. I often use matchstr().

I didn't know that submatch() doesn't do a substitute itself.
Yesterday I created a function which captures now what I want to capture using submatch() but I noted that the buffer is modified every time I capture the matches (using submatch()).

Btw.. thank you for your answers. I learn a lot of your replies.

--
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

No comments:

Post a Comment