Sometimes split is just too much hassle:
#! perl -slw use strict; use Data::Dump qw[ pp ]; ## cds:Acc(space)strain/location/ID/year(space)date(space)segment. my @recs = map[ m[ > ( \S+ ) \s ( [^/]+ ) / ( [^/]+ ) / ( [^/]+ ) / ( \S+ ) \s ( \S+ ) \s ( \S+ ) ]x ], <DATA>; pp \@recs; __DATA__ >cds:ADD75048 A/Brussels/INS71/2009 2009/10/30 HA >cds:ADF58353 A/Germany-MV/HGW4/2009 2009/12/ HA >cds:ADF58351 A/Germany-MV/HGW6/2009 2009/12/ HA >cds:ADU76781 A/England/94780010/2009 2009/10/22 HA >cds:AEA30293 A/Netherlands/2223b/2009 2009/11/18 HA >cds:ADD23250 A/District of Columbia/INS17/2009 2009/10/26 HA >cds:ADX98640 A/San Diego/INS13/2009 2009/10/19 HA >cds:ADD74978 A/San Diego/INS54/2009 2009/10/12 HA >cds:ADF27925 A/Texas/JMS407/2010 2010/01/11 HA >cds:ADM95824 A/Finland/661/2009 2009/10/26 HA >cds:ADD97035 A/Wisconsin/629-D00036/2009 2009/09/15 HA
Outputs
c:\test>junk98 [ ["cds:ADD75048","A","Brussels","INS71",2009,"2009/10/30","HA"], ["cds:ADF58353","A","Germany-MV","HGW4",2009,"2009/12/","HA"], ["cds:ADF58351","A","Germany-MV","HGW6",2009,"2009/12/","HA"], ["cds:ADU76781","A","England",94780010,2009,"2009/10/22","HA"], ["cds:AEA30293","A","Netherlands","2223b",2009,"2009/11/18","HA",], ["cds:ADD23250","A","District of Columbia","INS17",2009,"2009/10/26" +,"HA",], ["cds:ADX98640","A","San Diego","INS13",2009,"2009/10/19","HA",], ["cds:ADD74978","A","San Diego","INS54",2009,"2009/10/12","HA",], ["cds:ADF27925","A","Texas","JMS407",2010,"2010/01/11","HA"], ["cds:ADM95824","A","Finland",661,2009,"2009/10/26","HA"], ["cds:ADD97035","A","Wisconsin","629-D00036",2009,"2009/09/15","HA", +], ]
In reply to Re: Tricky reg ex
by BrowserUk
in thread How to substitute something from only between two specified charecters
by ZWcarp
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |