> :echo substitute(string, '\.\zs\A\|\a\zs\l', '', 'g') Thanks Tony. I ended up modifying it a bit -- I put the + quantifier after the \l, and I removed the \. because it was keeping the _ and . chars in the result.
Here's my tweaks to your suggestion: let string="FruitCompanyController_foo_bar_quk.groovy" echo substitute(string, '\a\zs\l\+\|\zs\A', '', 'g') >>FCCfbqg Thanks again! --Nate On Tue, Jun 30, 2009 at 3:56 AM, Tony Mechelynck<[email protected]> wrote: > > On 30/06/09 09:50, Nathan Neff wrote: >> >> Hello, >> >> I'd like to be able to use Vim to get characters from a string that >> fit the following criteria >> >> 1) Is the first character in the string >> OR >> 2) Is an upper-case character >> OR >> 3) Is the first character in a "word", meaning the "b" in "foo_bar" or >> the "g" in "foo.groovy" >> >> I have a Perl script which gets close: >> >> #!/usr/bin/perl >> $string = 'fooBarBazQuk_hello.world'; >> @matches = $string =~ /(^\w|[A-Z]|_\w|\W\w)/g; >> print "Matches are: " . join ":", @matches; >> >> With the Perl script, I can just weed out characters like "_" and "." >> after I get my list of matches. >> >> I've tried using Vim's matchstr and the matchlist functions, but can't >> quite get the regex >> correct. >> >> Can anyone help? >> >> Thanks >> --Nate > > The following is untested. SINGLE quotes are important. > > :echo substitute(string, '\.\zs\A\|\a\zs\l', '', 'g') > > If I didn't goof, this should display the string after removing from it > all nonalpha characters except at the very start and all lowercase > characters immediately preceded by a letter. If the string is > 'fooBarBazQuk_hello.world' as in your example, it ought to display > > fBBQhw > > See > :help substitute() > > Remove the initial \.\zs in the pattern if you want to remove nonalpha > characters even at the start. > > > If you want to use this repeatedly on various strings, you can of course > define it as a function: > > function CamelCaseInitials(string) > return substitute(a:string, '\.\zs\A\|\a\zs\l', '', 'g') > endfunction > > > Best regards, > Tony. > -- > Q: Where can you buy black lace crotchless panties for sheep? > A: Fredrick's of Ithaca, New York. > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_use" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---
