Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re^2: RegExp, grabbing first name

by Anonymous Monk
on Feb 25, 2016 at 19:23 UTC ( [id://1156134]=note: print w/replies, xml ) Need Help??


in reply to Re: RegExp, grabbing first name
in thread RegExp, grabbing first name

But I don't have my data in a hash (key=>value), I have a list of names that I have to extract the first name from the full name, but thanks for replaying!

Replies are listed 'Best First'.
Re^3: RegExp, grabbing first name
by poj (Abbot) on Feb 25, 2016 at 19:46 UTC

    Same for list

    #!perl use strict; my @list = ('BULLOCK JOE A','SMITH, A DOE'); for my $name (@list){ my ($surname,$first) = $name =~ /(\w{3,})/g; print "$first : $name\n"; }
    poj
Re^3: RegExp, grabbing first name
by hippo (Bishop) on Feb 25, 2016 at 23:50 UTC
    But I don't have my data in a hash

    The hash is used as a clear and concise way to list both the data which you have (the keys) with the results which you want (the values) and to test that an operation on the former yields the latter. There is no need for you to use a hash in your implementation. See How to ask better questions using Test::More and sample data for a recent discussion on why using a test in a question is a good idea and why (to my mind) using a test in an answer is equally beneficial.

    The fact that my example iterates over a list (keys %names) should help you to use a similar list in your own code as do the examples from pod and ExReg.

Re^3: RegExp, grabbing first name
by ExReg (Priest) on Feb 25, 2016 at 20:07 UTC

    You could just as easily do it with an array or list then. Modify the code hippo gave to use an array instead:

    #!/usr/bin/env perl use strict; use warnings; my @names = ( 'BULLOCK JOE A', 'SMITH, A DOE', ); for my $fullname (@names) { my ($sname, $fname) = $fullname =~ /([A-Z]{3,})/g; print "Forename $fname extracted from $fullname"; }

    There are three assumptions that need to be met: both first and last names must be at least three letters long, the last name must come first, and the middle name must be an initial (or at least less than three letters long. If you cannot meet those conditions, you will have a hard problem.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (6)
As of 2024-04-24 08:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found