Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

A Search And Replace Question

by FouRPlaY (Monk)
on Oct 24, 2000 at 23:23 UTC ( [id://38181]=perlquestion: print w/replies, xml ) Need Help??

FouRPlaY has asked for the wisdom of the Perl Monks concerning the following question:

If I'm searching for a keyword which is followed by "stuff", how can I add some text after the "stuff"?

Replies are listed 'Best First'.
Re: A Search And Replace Question
by Fastolfe (Vicar) on Oct 24, 2000 at 23:30 UTC
    You can do this one of a few ways:
    1. s/stuff/stuff$extra_stuff/
    2. s/stuff/$&$extra_stuff/
    3. s/(?<=stuff)/$extra_stuff/
    You're basically doing a search-and-replace, but replacing the text with part of what was already there. The 3rd regular expression uses a zero-width look-behind assertion, which technically matches nothing, but gives you a starting point for the "replace" right after the end of "stuff", so it "feels" cleaner. How it performs is another matter, and one I'm not qualified to deal with.

    You may be interested in reading up on perlre for Perl regular expressions, and seeing how many examples you can figure out. Use perlre as a reference.

    Update: Based on a brief Chatterbox discussion, it was determined that this isn't entirely what you want. I guess I misunderstood. If you want to put $extra_stuff at the end of the string, it might be most efficient to do something like this:

    $_ .= $extra_stuff if /search term/;
    If $_ contains multiple lines, perhaps this might work better:
    s/\G.*?$search_term.*$/$&$extra_stuff/gm;
    (That last bit is untested and sorta makes sense in my head, but your mileage may vary.)
RE: A Search And Replace Question
by FouRPlaY (Monk) on Oct 25, 2000 at 03:05 UTC
    There's a reason such a simple question like this got posted. The question boils it down really well. And it got answer easily. My problem answer myself was that I let it get to confusing. The problem as I saw it was this:

    "Given an input unix text file that has been broken into an array by lines, had any unnessacry characters replaced with ! and split based on those !; find a keyword followed by data of unknow size that can be changed at any time and add </table><br><br><table border> to the end of it."

    Which is a much harder to answer question then "If I'm searching for a keyword which is followed by "stuff", how can I add some text after the "stuff"?"

    Well, that's what was going through my head. I broke the problem down to post it here, but didn't for myself.

    BTW, I took Fastolfe's suggestion and it worked fine.
Re: A Search And Replace Question
by AgentM (Curate) on Oct 24, 2000 at 23:25 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://38181]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (6)
As of 2024-03-28 10:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found