Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Regular Expressions

by replytokp (Initiate)
on Jul 06, 2015 at 15:57 UTC ( #1133390=perlquestion: print w/replies, xml ) Need Help??

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

Hello , i am trying to write a code, in which i need to replace 5 diffrent words in a line and write to an array. but iam not abe to get it. could anybody help me.

for eg: "In the table above, the characters themselves, in the first column, are links to descriptions of characters"

here i need to replace : table characters selves first links

Replies are listed 'Best First'.
Re: Regular Expressions
by stevieb (Canon) on Jul 06, 2015 at 16:07 UTC

    Welcome to PerlMonks!

    Please post the code you are trying, a few lines of example input, and some example output that you expect, following these guidelines: How do I post a question effectively?.



Re: Regular Expressions
by Laurent_R (Canon) on Jul 06, 2015 at 17:00 UTC
    Hi eplytokp,

    at the very least, you should tell us by what you want to replace these words. Also, these words you want to replace, are you supposed to hard code them in the program or are they coming from another source (e.g. a file).

    Finally, this seems to be a homework assignment. Please tell us upfront if this is the case. It doesn't mean that we are not willing to help, but we might insist more on seeing your attempts, to help you correct your mistakes.

Re: Regular Expressions
by AnomalousMonk (Archbishop) on Jul 07, 2015 at 00:44 UTC

    Yes, you show no code, the problem description is very vague, you don't say with what the words are to be 'replaced', and yes, this does smell like homework, but...

    c:\@Work\Perl\monks>perl -wMstrict -le "my $s = 'In the table above, the characters themselves, in the first +column, are links to descriptions of characters'; print qq{'$s'}; ;; my %xlate = qw(table tooble characters croobles selves others first second +links loonks); ;; my ($word) = map qr{ $_ }xms, join q{ | }, keys %xlate ; print $word; ;; $s =~ s{ ($word) }{$xlate{$1}}xmsg; print qq{'$s'}; " 'In the table above, the characters themselves, in the first column, a +re links to descriptions of characters' (?msx-i: first | selves | table | links | characters ) 'In the tooble above, the croobles themothers, in the second column, a +re loonks to descriptions of croobles'

    Update: Caution: long lines: some wraparound may have occurred.

    Give a man a fish:  <%-(-(-(-<

Re: Regular Expressions
by Anonymous Monk on Jul 07, 2015 at 05:41 UTC

    Sorry for the Unclear question. I am first time in this. this is somewhat a homework question.Plz help me to sort it out..

    the text i will get from another .txt file and the text file will have so many lines

    i need to replace some repeating words with comma in each line.

    For eg:

    These are the-words-ofline-X c:\temp\onefilename.txt with time =10day2h::56m::25s

    These are the-words-ofline-Y c:\temp\secondfilename.txt with time =5day3h::46m::45s

    at the end i need



    in an array

      You still show no code (i.e., no effort), so I probably shouldn't respond in this way. Please try to make a greater effort in future.

      This uses the  \K regex operator, available with Perl versions 5.10 and above. (Update: You should state the Perl version you're working with.) The  dd (from Data::Dump) statement at the end shows that the contents of the  @lines array have been changed "in place" (the  $line scalar is aliased to each element of the array).

      c:\@Work\Perl\monks>perl -wMstrict -le "use 5.010; ;; use Data::Dump; ;; my @lines = ( 'X c:\temp\onefilename.txt with time =10day2h::56m::25s', 'Y c:\temp\secondfilename.txt with time =5day3h::46m::45s', ); ;; for my $line (@lines) { print qq{'$line'}; $line =~ s{ \G (?: [[:upper:]] \K \s+ | \S+ \K \s+ \D+ | \d+ \K \D+ +) } {,}xmsg; print qq{'$line' \n}; } ;; dd \@lines; " 'X c:\temp\onefilename.txt with time =10day2h::56m::25s' 'X,c:\temp\onefilename.txt,10,2,56,25,' 'Y c:\temp\secondfilename.txt with time =5day3h::46m::45s' 'Y,c:\temp\secondfilename.txt,5,3,46,45,' [ "X,c:\\temp\\onefilename.txt,10,2,56,25,", "Y,c:\\temp\\secondfilename.txt,5,3,46,45,", ]
      Please see perlre, perlrequick, and especially perlretut.

      Give a man a fish:  <%-(-(-(-<

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (3)
As of 2023-01-30 05:38 GMT
Find Nodes?
    Voting Booth?

    No recent polls found