coldfingertips has asked for the wisdom of the Perl Monks concerning the following question:
How can you setup a regex to only work an X number of times per separated data? This script reads from a text file different pieces of text separated by ====\n\n and I need to have the regexes work a certain number of times.
For example, running the script below can return 2 or more prices it finds but I ONLY want it to find the first one for each set. And the phone numbers can match 1 or 2 times but no more than that.
I tried wrapping it in a for ( 0 .. 1) but it errors out instead. What can be done for something like this?
$/="====\n\n"; open (READFROM, "$readfrom") or die "Cannot open $readfrom: $!"; open (WRITETO, ">$writeto") or die "Cannot open $writeto: $!"; while ( <READFROM> ) { chomp; my $price; for ( 0 .. 1) { $_ =~ m/ ( \$ (?:\d{1,3},?)+ (?:\.\d{0,2})? (?![.\d]) ) /x; $price = "$1"; } print "$price\n"; } close (WRITETO) or die "Cannot close $writeto: $!"; close (READFROM) or die "Cannot close $readfrom: $!"; the bottom part is just a piece of the file we're reading from so you +can get an idea <code> Boardman $157,000 COLONIAL/1 ACRE WOW! We finally found the 4 bedroom home you’ve been looking for. Call our +office today for details and directions for the best buy in Boardman. Appraised at $157 +,000. Asking ONLY $139,900 David Realty 330-758-8363 330-758-8363 ==== Boardman $475 A BARGAIN - 0 DOWN $475 & up/mo. 2 Bedroom, extra sharp ranch. Ready to occupy, not for rent. Easy to p +urchase. 2 homes available. 7372 Oregon Trail 7421 Siera Madre All Credit Considered Jim Rich Realty 330-783-9300 ====
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Specifying how many times a regex should work
by blokhead (Monsignor) on Jun 05, 2004 at 18:17 UTC | |
by coldfingertips (Pilgrim) on Jun 05, 2004 at 19:48 UTC | |
by BrowserUk (Patriarch) on Jun 05, 2004 at 21:20 UTC |