|
| Finde antal matches i regexp Fra : Jens Thomsen |
Dato : 16-04-08 08:48 |
|
Jeg har en funktion, der tager et regexp som parameter.
Den skal returnere alle resultaterne fra paranteserne, men den ved ikke på
forhånd hvor mange resultater der kan være.
Jeg har hacket lidt [1] men mon ikke det kan gøres renere og skalerbart til
mere end ni resultater?
Bemærk, eksemplet er simplificeret
[1]
sub return_matches ($data, $regexp) {
my $res = $data =~ /$regexp/;
return ($res, $1, $2, $3, $4, $5, $6, $7, $8, $9);
}
| |
Peter Makholm (16-04-2008)
| Kommentar Fra : Peter Makholm |
Dato : 16-04-08 09:33 |
|
"Jens Thomsen" <jt@nej.nej> writes:
> Jeg har hacket lidt [1] men mon ikke det kan gøres renere og skalerbart til
> mere end ni resultater?
Læs 'perldoc perlvar' og led efter variablen @- (søg efter
@LAST_MATCH_START).
Det tror jeg rimelig godt beskriver hvordan du løser dit problem.
//Makholm
| |
Flemming Frandsen (16-04-2008)
| Kommentar Fra : Flemming Frandsen |
Dato : 16-04-08 13:13 |
|
Jens Thomsen wrote:
> mere end ni resultater?
> sub return_matches ($data, $regexp) {
>
> my $res = $data =~ /$regexp/;
>
> return ($res, $1, $2, $3, $4, $5, $6, $7, $8, $9);
> }
Hvad er der nu galt med det her?:
sub return_matches ($data, $regexp) {
return $data =~ /$regexp/;
}
Hint: m// returnerer captures i et array i list context.
Jeg har ofte brugt noget i stil med det her:
my ($protocol, $host, $path) =~ m!^([^:]+)://([^/]+)(.*)$! or die;
Så undgår jeg helt at rode med $1 og venner.
| |
Adam Sjøgren (16-04-2008)
| Kommentar Fra : Adam Sjøgren |
Dato : 16-04-08 14:53 |
|
On Wed, 16 Apr 2008 14:13:18 +0200, Flemming wrote:
> Hvad er der nu galt med det her?:
> sub return_matches ($data, $regexp) {
> return $data =~ /$regexp/;
> }
Umiddelbart vil jeg gætte på at det er syntaksen.
,
Adam
--
"Gravity is arbitrary!" Adam Sjøgren
asjo@koldfront.dk
| |
Adam Sjøgren (18-04-2008)
| Kommentar Fra : Adam Sjøgren |
Dato : 18-04-08 15:59 |
|
On Thu, 17 Apr 2008 23:29:13 +0200, Michael wrote:
> Flemming Frandsen wrote:
>> Adam Sjøgren wrote:
>>> On Wed, 16 Apr 2008 14:13:18 +0200, Flemming wrote:
>>>> Hvad er der nu galt med det her?:
>>>> sub return_matches ($data, $regexp) {
>>> Umiddelbart vil jeg gætte på at det er syntaksen.
>> Ja, det var da noget skrækkeligt vrøvl jeg fik skrevet:)
> Det er ikke ligefrem perl, men din ide er da god nok.
Så var det vel også [bare] syntaksen den var gal med?
,
Adam
--
"Och jag säger som Jennifer Lopez: Utan mina pärmar Adam Sjøgren
hade det blivit oordning!" asjo@koldfront.dk
| |
Adam Sjøgren (18-04-2008)
| Kommentar Fra : Adam Sjøgren |
Dato : 18-04-08 16:42 |
|
On Fri, 18 Apr 2008 17:12:09 +0200, Michael wrote:
> Adam Sjøgren wrote:
>> On Thu, 17 Apr 2008 23:29:13 +0200, Michael wrote:
>>> Det er ikke ligefrem perl, men din ide er da god nok.
>> Så var det vel også [bare] syntaksen den var gal med?
> Ja, men I glemte at gøre Jens opmærksom på at fremgangsmåden virker
> udemærket (det er sandsynligvis den bedste løsning på hans problem).
Tjah, jeg er ikke rigtigt enig, jeg gik ud fra at det var underforstået
at når svaret på hvad der er galt (alene) er syntaksen, så er resten -
dvs. ideen - god nok.
Mvh.
--
"Der er ikke noget, der virker i nat" Adam Sjøgren
asjo@koldfront.dk
| |
|
|