Friday, April 20, 2012

Re: matchend() and \zs

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.

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