Searching pattern in vim

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Searching pattern in vim

Melvin Simon
Hi,

Could someone guide me to match patterns in the following manner:-

input

/somealphabets/somethingelse/finalword

output

finalword

i.e. I want to ignore all other'/' and get the last word alone, i.e. word between last / and $ (end of line)

Thanks

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

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Searching pattern in vim

Tony Mechelynck
To erase everything until the last slash on every line of the current file:

:%s/.*\//

i.e "replace any number of characters" (dot means "anything except a
line break"), "as many as possible" (that's the star), "ending in a
(backslash-escaped) slash, by nothing". The % range is short for 1,$
i.e. "from first to last line".

If there are several slashes on a line, all of them except the last
one will be caught by the .* part.

To get the part of a string data item after the last slash, you use
the same pattern:

:let result = substitute(givenstring, '.*\/', '', '')

I'm using _single_ quotes, i.e., there are two empty arguments at the
end. 'result' and 'givenstring' are variable-names, you may replace
them by whatever is required at that point in your code.

Best regards,
Tony.

On Mon, Feb 6, 2017 at 10:46 AM, Melvin Simon <[hidden email]> wrote:

> Hi,
>
> Could someone guide me to match patterns in the following manner:-
>
> input
>
> /somealphabets/somethingelse/finalword
>
> output
>
> finalword
>
> i.e. I want to ignore all other'/' and get the last word alone, i.e. word between last / and $ (end of line)
>
> Thanks
>
> --
> --
> 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
>
> ---
> You received this message because you are subscribed to the Google Groups "vim_use" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
> For more options, visit https://groups.google.com/d/optout.

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

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Searching pattern in vim

Melvin Simon
Thanks a lot Tony!

On Mon, Feb 6, 2017 at 3:36 PM, Tony Mechelynck <[hidden email]> wrote:
To erase everything until the last slash on every line of the current file:

:%s/.*\//

i.e "replace any number of characters" (dot means "anything except a
line break"), "as many as possible" (that's the star), "ending in a
(backslash-escaped) slash, by nothing". The % range is short for 1,$
i.e. "from first to last line".

If there are several slashes on a line, all of them except the last
one will be caught by the .* part.

To get the part of a string data item after the last slash, you use
the same pattern:

:let result = substitute(givenstring, '.*\/', '', '')

I'm using _single_ quotes, i.e., there are two empty arguments at the
end. 'result' and 'givenstring' are variable-names, you may replace
them by whatever is required at that point in your code.

Best regards,
Tony.

On Mon, Feb 6, 2017 at 10:46 AM, Melvin Simon <[hidden email]> wrote:
> Hi,
>
> Could someone guide me to match patterns in the following manner:-
>
> input
>
> /somealphabets/somethingelse/finalword
>
> output
>
> finalword
>
> i.e. I want to ignore all other'/' and get the last word alone, i.e. word between last / and $ (end of line)
>
> Thanks
>
> --
> --
> 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
>
> ---
> You received this message because you are subscribed to the Google Groups "vim_use" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
> For more options, visit https://groups.google.com/d/optout.

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

---
You received this message because you are subscribed to a topic in the Google Groups "vim_use" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/vim_use/n31k48AwgMU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.

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

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.