Thread View: pl.comp.lang.perl
5 messages
5 total messages
Started by Krzysztof Krzyżaniak
Thu, 02 Dec 2010 15:08
regexp do wycinania parametrów z urla
Author: Krzysztof Krzyżaniak
Date: Thu, 02 Dec 2010 15:08
Date: Thu, 02 Dec 2010 15:08
70 lines
2974 bytes
2974 bytes
Potrzebowałbym znaleźć regexp który mi wytnie jeden parametr z urla i
zrobi url bez tego parametru, konkretne to wycięcie image=cos lub image=
czyli np.
/index.php?test=1&image=cos&p=2 => /index.php?test=1&p=2
/index.php?test=1&image=cos&p=2&r=4 => /index.php?test=1&p=2&r=4
/index.php?b=2&a=1&image=cos&p=2&r=4 => /index.php?b=2&a=1&p=2&r=4
/index.php?image=cos&p=3 => /index.php?p=3
/index.php?image=&p=3 => /index.php?p=3
/index.php?p2=2&image=cos => /index.php?p2=2
/index.php?title=image&sometest=1 => /index.php?title=image&sometest=1
/index.php?title=image&someimage=data&test=1 => /index.php?title=image&sometest=1
/index.php?title=image&someimage=data&test=1 => /index.php?title=image&someimage=data&test=1
#!/usr/bin/perl
use common::sense;
my @b = (
"/index.php?test=1&image=cos&p=2",
"/index.php?test=1&image=cos&p=2&r=4",
"/index.php?b=2&a=1&image=cos&p=2&r=4",
"/index.php?image=cos&p=3",
"/index.php?image=&p=3",
"/index.php?p2=2&image=cos",
"/index.php?title=image&sometest=1",
"/index.php?title=image&someimage=data&test=1"
);
my @a = (
"/index.php?test=1&p=2",
"/index.php?test=1&p=2&r=4",
"/index.php?b=2&a=1&p=2&r=4",
"/index.php?p=3",
"/index.php?p=3",
"/index.php?p2=2",
"/index.php?title=image&sometest=1",
"/index.php?title=image&someimage=data&test=1"
);
my $r = '([^&]*)image=[^&]*&*(.*)';
my $i = 0;
for my $t ( @b ) {
print $t;
$t =~ s/$r/\1\2/;
if ( $t eq $a[ $i ] ) {
say " => $t OK";
}
else {
say " => $t <> $a[ $i ] ERROR";
}
$i++;
}
wysypuje się na dwóch przykładach:
/index.php?p2=2&image=cos => /index.php?p2=2& <> /index.php?p2=2 ERROR
/index.php?title=image&someimage=data&test=1 => /index.php?title=image&sometest=1 <> /index.php?title=image&someimage=data&test=1 ERROR
i w sumie po pół godzinie nie jestem już pewien czy da się to zrobić
regexpem. Jakieś szybkie pomysły?
eloy
--
-------e-l-o-y----------------------------e-l-o-y-@-k-o-f-e-i-n-a-.-n-e-t------
jak to dobrze, że są oceany - bez nich byłoby jeszcze smutniej
Re: regexp do wycinania parametrów z urla
Author: Maciej Misiak
Date: Thu, 02 Dec 2010 15:59
Date: Thu, 02 Dec 2010 15:59
24 lines
1824 bytes
1824 bytes
W dniu 2010-12-02 16:08, Krzysztof Krzyżaniak pisze: > > wysypuje się na dwóch przykładach: > > /index.php?p2=2&image=cos => /index.php?p2=2& <> /index.php?p2=2 ERROR > /index.php?title=image&someimage=data&test=1 => /index.php?title=image&sometest=1<> /index.php?title=image&someimage=data&test=1 ERROR > > > i w sumie po pół godzinie nie jestem już pewien czy da się to zrobić > regexpem. Jakieś szybkie pomysły? Druga sprawa dałaby się załatwić przez \bimage, czyli zaznaczyć, że jest word boundary przed 'image'. Natomiast pierwsza tak na szybko to alternatywą. Więc razem coś takiego: my $re='([^&]*)\bimage=[^&]*&*(.*)|&image=[^&]*$' A może w ogóle uprościć i usuwać & przed a nie po? Bo przed zawsze będzie: my $re='&image=[^&]*' -- grizzley
Re: regexp do wycinania parametrów z urla
Author: Krzysztof Krzyżaniak
Date: Fri, 03 Dec 2010 10:42
Date: Fri, 03 Dec 2010 10:42
32 lines
2027 bytes
2027 bytes
Maciej Misiak <grizzley@poczta.onet.pl> writes:
> W dniu 2010-12-02 16:08, Krzysztof Krzyżaniak pisze:
>>
>> wysypuje się na dwóch przykładach:
>>
>> /index.php?p2=2&image=cos => /index.php?p2=2& <> /index.php?p2=2 ERROR
>> /index.php?title=image&someimage=data&test=1 => /index.php?title=image&sometest=1<> /index.php?title=image&someimage=data&test=1 ERROR
>>
>>
>> i w sumie po pół godzinie nie jestem już pewien czy da się to zrobić
>> regexpem. Jakieś szybkie pomysły?
>
> Druga sprawa dałaby się załatwić przez \bimage, czyli zaznaczyć, że jest
> word boundary przed 'image'.
> Natomiast pierwsza tak na szybko to alternatywą. Więc razem coś takiego:
>
> my $re='([^&]*)\bimage=[^&]*&*(.*)|&image=[^&]*$'
To działa, dzięki.
> A może w ogóle uprościć i usuwać & przed a nie po? Bo przed zawsze będzie:
>
> my $re='&image=[^&]*'
Nie zawsze, może być index.php?image=p
eloy
--
-------e-l-o-y----------------------------e-l-o-y-@-k-o-f-e-i-n-a-.-n-e-t------
jak to dobrze, że są oceany - bez nich byłoby jeszcze smutniej
Re: regexp do wycinania parametrów z urla
Author: Maciej Misiak
Date: Fri, 03 Dec 2010 11:11
Date: Fri, 03 Dec 2010 11:11
35 lines
2246 bytes
2246 bytes
W dniu 2010-12-03 11:42, Krzysztof Krzyżaniak pisze: > Maciej Misiak<grizzley@poczta.onet.pl> writes: > >> W dniu 2010-12-02 16:08, Krzysztof Krzyżaniak pisze: >>> >>> wysypuje się na dwóch przykładach: >>> >>> /index.php?p2=2&image=cos => /index.php?p2=2& <> /index.php?p2=2 ERROR >>> /index.php?title=image&someimage=data&test=1 => /index.php?title=image&sometest=1<> /index.php?title=image&someimage=data&test=1 ERROR >>> >>> >>> i w sumie po pół godzinie nie jestem już pewien czy da się to zrobić >>> regexpem. Jakieś szybkie pomysły? >> >> Druga sprawa dałaby się załatwić przez \bimage, czyli zaznaczyć, że jest >> word boundary przed 'image'. >> Natomiast pierwsza tak na szybko to alternatywą. Więc razem coś takiego: >> >> my $re='([^&]*)\bimage=[^&]*&*(.*)|&image=[^&]*$' > > To działa, dzięki. > >> A może w ogóle uprościć i usuwać& przed a nie po? Bo przed zawsze będzie: >> >> my $re='&image=[^&]*' > > Nie zawsze, może być index.php?image=p Ach fakt. W takim razie jeszcze pytajnik jako alternatywa do & z przodu i powinno być git: my $re='[&?]image=[^&]*' -- grizzley
Re: regexp do wycinania parametrów z urla
Author: Krzysztof Krzyżaniak
Date: Fri, 03 Dec 2010 11:50
Date: Fri, 03 Dec 2010 11:50
47 lines
2581 bytes
2581 bytes
Maciej Misiak <grizzley@poczta.onet.pl> writes:
> W dniu 2010-12-03 11:42, Krzysztof Krzyżaniak pisze:
>> Maciej Misiak<grizzley@poczta.onet.pl> writes:
>>
>>> W dniu 2010-12-02 16:08, Krzysztof Krzyżaniak pisze:
>>>>
>>>> wysypuje się na dwóch przykładach:
>>>>
>>>> /index.php?p2=2&image=cos => /index.php?p2=2& <> /index.php?p2=2 ERROR
>>>> /index.php?title=image&someimage=data&test=1 => /index.php?title=image&sometest=1<> /index.php?title=image&someimage=data&test=1 ERROR
>>>>
>>>>
>>>> i w sumie po pół godzinie nie jestem już pewien czy da się to zrobić
>>>> regexpem. Jakieś szybkie pomysły?
>>>
>>> Druga sprawa dałaby się załatwić przez \bimage, czyli zaznaczyć, że jest
>>> word boundary przed 'image'.
>>> Natomiast pierwsza tak na szybko to alternatywą. Więc razem coś takiego:
>>>
>>> my $re='([^&]*)\bimage=[^&]*&*(.*)|&image=[^&]*$'
>>
>> To działa, dzięki.
>>
>>> A może w ogóle uprościć i usuwać& przed a nie po? Bo przed zawsze będzie:
>>>
>>> my $re='&image=[^&]*'
>>
>> Nie zawsze, może być index.php?image=p
>
> Ach fakt. W takim razie jeszcze pytajnik jako alternatywa do & z przodu i
> powinno być git:
>
> my $re='[&?]image=[^&]*'
nope,
/index.php?image=cos&p=3 => /index.php&p=3 <> /index.php?p=3 ERROR
/index.php?image=&p=3 => /index.php&p=3 <> /index.php?p=3 ERROR
Ale pierwsza propozycja działa i powinna przejść w varniszu :)
eloy
--
-------e-l-o-y----------------------------e-l-o-y-@-k-o-f-e-i-n-a-.-n-e-t------
jak to dobrze, że są oceany - bez nich byłoby jeszcze smutniej
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads