Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Replacing words in VB code but not strings or comments (Simplified versions)

by AnomalousMonk (Abbot)
on Sep 28, 2013 at 19:45 UTC ( #1056159=note: print w/ replies, xml ) Need Help??


in reply to Replacing words in VB code but not strings or comments

Here's a variation for 5.8 and also for 5.10 that's simpler (for some definition of 'simpler') and that I think should run faster since it avoids  /e code evaluation during replacement, but again, I've done no benchmarking. Of course, the same approach applies as well to the 5.14 version code. Tested with the same Perl versions/vendors as before. Also to repeat: adding more of your own test cases would probably be a good idea.

# should be ok for any version 5.8.9+ sub replace_5_8_9_b { my ($string, ) = @_; my $rx_dquot = qr{ " [^"]* (?: "" [^"]* )* " }xms; my $rx_ceol = qr{ ' [^\n]* \n? \z }xms; my $rx_skipem = qr{ $rx_ceol | $rx_dquot }xms; # alt order immate +rial # my $rx_skipem = qr{ $rx_dquot | $rx_ceol }xms; # alt order immate +rial my $rx_keepit = qr{ (?! $rx_rename) (?! $rx_dquot) (?! $rx_ceol) . + }xms; $string =~ s{ \G ((?: (?> $rx_keepit*) | (?> $rx_skipem*))*) # skip this stuff ($rx_rename) # grab and rename } {$1$renames->{$2}}xmsg; return $string; } # uses \K and possessive quantifiers from 5.10+ sub replace_5_10_1_b { my ($string, ) = @_; my $rx_dquot = qr{ " [^"]*+ (?: "" [^"]*+ )*+ " }xms; my $rx_ceol = qr{ ' [^\n]*+ \n?+ \z }xms; my $rx_skipem = qr{ $rx_ceol | $rx_dquot }xms; # alt order immate +rial # my $rx_skipem = qr{ $rx_dquot | $rx_ceol }xms; # alt order immate +rial my $rx_keepit = qr{ (?! $rx_rename) (?! $rx_dquot) (?! $rx_ceol) . + }xms; $string =~ s{ \G (?: $rx_keepit*+ | $rx_skipem*+)* # skip this stuff \K ($rx_rename) # grab and rename } {$renames->{$1}}xmsg; return $string; }


Comment on Re: Replacing words in VB code but not strings or comments (Simplified versions)
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1056159]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (9)
As of 2015-07-03 17:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (54 votes), past polls