in reply to perl regex

You haven't asked a question, nor explained what isn't working, so this is a guess.

my $row = 'We_need_feed'; #my ($last) = $row =~ /[^_]$/g; #match we # [^_] matches everything except underscore, but only one character; # Plus you've anchored it to the last character before the end of the +string, # so it will always and only match the last character of the string; # unless it is an underscore, in which case it fails to match at all. #my ($last) = $row =~ /^\w?[^_]/g;#match feed # ^\w? matches a single non-whitespace character at the start of the s +tring, # if the first character isn't whitespace, otherwise it matches nothin +g. # [^_] matches a single non-underscore as above. # Ie. You matched two characters "We" my ($last) = $row =~ /[need]+$/g ; # [need]+ matches a one or more characters, so long as they are either + 'd' or 'e' or 'n'; other wise nothing # but the $ means only at the of the line. # so this matched the 3-char string 'eed'.

You'll get better answers if you tell us what you need to know in words as well as code. Relying on us to read between the lines of your non-functional code and comments to extract the meaning and question, is unlikely to get the best answers. Indeed, If I wasn't bored out of my mind waiting for a process that has been running for 50+ hours to finish, I wouldn't have bothered answering your lazy post at all.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority". The enemy of (IT) success is complexity.
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^2: perl regex
by cbtshare (Monk) on Nov 13, 2016 at 18:05 UTC
    thank you very much but: To match the word 'need', somewhere in the line you could use /need/. would just return 1 or 0, so /(need)/ would match the word need.Thank you for your explanation :)
      so /(need)/ would match the word need.

      ... and return the matched word 'need'; but yes.

      However, what is the purpose of capturing the matched word when you already know what it is?

      Ie. If your intent is to do:

      my( $foundWord ) = $string =~ /(need)/;

      That is equivalent to doing:

      my $foundWord = $string =~ /need/ ? 'need ' : undef;

      The point being that capturing is expensive and the need to capture a known constant string is strongly indicative of flawed logic.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority". The enemy of (IT) success is complexity.
      In the absence of evidence, opinion is indistinguishable from prejudice.

        Just to make the point about capturing being expensive.

        The following two samples do the same thing, and when the string haystack fails to contain the needle, the capturing version is 15% slower; but the real difference is when the haystack does contain the needle, when it takes nearly 5 times as long!:

        [0]{} Perl> $s='the quick brown fox jumps of the lazy dog'; cmpthese - +1,{a=>q[my($f)=$s=~m[(need)];], b=>q[my $f= $s=~ m[need] ? 'need' : u +ndef; ] };; Rate a b a 2902896/s -- -12% b 3289193/s 13% -- [0]{} Perl> $s='the quick brown fox jumps need of the lazy dog'; cmpth +ese -1,{a=>q[my($f)=$s=~m[(need)];], b=>q[my $f= $s=~ m[need] ? 'need +' : undef; ] };; Rate a b a 517876/s -- -83% b 3000131/s 479% --

        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority". The enemy of (IT) success is complexity.
        In the absence of evidence, opinion is indistinguishable from prejudice.