in reply to Regex perplexity
#!/usr/bin/perl -w use strict; my ($firstQ, $firstS); my ($lastQ, $lastS); while (!(defined($firstQ) && defined($firstS))) { $_=<>; $firstQ=$1 if(/^Query:\s+?(\d+)[\sgcat]*(\d+)/) && do{$lastQ=$ +2}; $firstS=$1 if(/^Sbjct:\s+?(\d+)[\sgcat]*(\d+)/) && do{$lastS=$ +2}; } while(<>) { $lastQ=$2 if (/^Query:\s+?(\d+)[\sgcat]*(\d+)/); $lastS=$2 if (/^Sbjct:\s+?(\d+)[\sgcat]*(\d+)/); } print "First:\t$firstQ\t$firstS\n"; print "Last:\t$lastQ\t$lastS\n"; ## Output of large dataset: ############# First: 11 1 Last: 370 360 ## Output of small dataset: ############# First: 249 64265 Last: 271 64243
Code works with both a single data item or multiple data items spread across several lines. Now you can make the regexes in the second while loop more efficient by taking out the first capturing parentheses but I wanted to keep them the same as the first while loop so you could see the symmetry and what I was doing with the regex.
HTH
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Regex perplexity
by eweaverp (Scribe) on Jun 30, 2003 at 22:24 UTC | |
by eweaverp (Scribe) on Jun 30, 2003 at 22:30 UTC | |
by eweaverp (Scribe) on Jun 30, 2003 at 22:50 UTC |