Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: getting next word or number after another

by BillKSmith (Monsignor)
on Dec 18, 2020 at 03:25 UTC ( [id://11125387]=note: print w/replies, xml ) Need Help??


in reply to getting next word or number after another

Refer to \G anchor in perlre
$string =~ /$word\s*?(\S+)/g; my $next_word = $1; $string =~ /\G\s*?(\S+)/g; my $next_word_2 = $1;
Bill

Replies are listed 'Best First'.
Re^2: getting next word or number after another
by AnomalousMonk (Archbishop) on Dec 18, 2020 at 04:25 UTC

    The \G anchor does no harm, but is not necessary in the OPed example case (/g modifier causes match position to be preserved in void/boolean/scalar context):

    Win8 Strawberry 5.8.9.5 (32) Thu 12/17/2020 23:11:18 C:\@Work\Perl\monks >perl -Mstrict -Mwarnings my $string = " info info 100 - 2000 Kent"; my $word = "info"; $string =~ /$word\s*?(\S+)/g; my $next_word = $1; my $nwo = $-[1]; # offset of start of capture $string =~ /\s*?(\S+)/g; my $next_word_2 = $1; my $nwo_2 = $-[1]; print "The next word after $word is $next_word @ $nwo \n"; print "The next word or number after $next_word is $next_word_2 @ $nwo +_2 \n"; ^Z The next word after info is info @ 27 The next word or number after info is 100 @ 50
    (Repeated words are also handled properly with/without \G.)


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

      Thanks for your comment. My interpretation of the document required the \G. I would still recommend using it because it calls attention to the /g on the first match which is there only for its effect on the second match.
      Bill

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (2)
As of 2024-04-25 19:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found