Thread View: pl.comp.lang.perl
6 messages
6 total messages
Started by tomjas
Mon, 29 Nov 2010 11:33
Jak w zmienic wartosc liczbowa w regexpie
Author: tomjas
Date: Mon, 29 Nov 2010 11:33
Date: Mon, 29 Nov 2010 11:33
13 lines
1314 bytes
1314 bytes
Witam.
Temat dosc enigmatyczny wiec objasnie na przykladzie o co mi chodzi.
Klasyczny przyklad - napisy do filmu w formacie MicroDVD czyli
...
{63245}{63250}Jakis tekst
...
No wlasnie - jak teraz zwiekszyc te druga liczbe (napisy wyswietlaja sie
za krotko). Zapewne jako poczatkujacy zabieram sie od dupy strony
i probuje cos takiego:
while(<>){s/{(\d+)}{(\d+)}/{$1}{$2}/}
No i teraz - co podstawic pod $2, tak by nowe $2=$2+50?
Z gory dzieki - na przekor twierdzeniom ostatnio na grupie ze perl
umiera postanowilem sie nauczyc w nim regexpow.
Re: Jak w zmienic wartosc liczbowa w regexpie
Author: tomjas
Date: Mon, 29 Nov 2010 11:56
Date: Mon, 29 Nov 2010 11:56
19 lines
1608 bytes
1608 bytes
On Mon, 29 Nov 2010 11:33:44 +0000 (UTC), tomjas wrote:
> Witam.
> Temat dosc enigmatyczny wiec objasnie na przykladzie o co mi chodzi.
> Klasyczny przyklad - napisy do filmu w formacie MicroDVD czyli
> ...
> {63245}{63250}Jakis tekst
> ...
> No wlasnie - jak teraz zwiekszyc te druga liczbe (napisy wyswietlaja sie
> za krotko). Zapewne jako poczatkujacy zabieram sie od dupy strony
> i probuje cos takiego:
> while(<>){s/{(\d+)}{(\d+)}/{$1}{$2}/}
> No i teraz - co podstawic pod $2, tak by nowe $2=$2+50?
> Z gory dzieki - na przekor twierdzeniom ostatnio na grupie ze perl
> umiera postanowilem sie nauczyc w nim regexpow.
>
Dobra - zrobilem to tak:
while(<>){/{(\d+)}{(\d+)}/;$k=$2+50}
choc wyczuwam ze nie jest to nazbyt eleganckie i na pewno mozna to
zrobic lepiej...
Re: Jak w zmienic wartosc liczbowa w regexpie
Author: Andrzej Adam Filip
Date: Mon, 29 Nov 2010 12:03
Date: Mon, 29 Nov 2010 12:03
41 lines
2587 bytes
2587 bytes
tomjas <tomjas@WYTNIJTOpoczta.onet.pl> pisze:
> Witam.
> Temat dosc enigmatyczny wiec objasnie na przykladzie o co mi chodzi.
> Klasyczny przyklad - napisy do filmu w formacie MicroDVD czyli
> ...
> {63245}{63250}Jakis tekst
> ...
> No wlasnie - jak teraz zwiekszyc te druga liczbe (napisy wyswietlaja sie
> za krotko). Zapewne jako poczatkujacy zabieram sie od dupy strony
> i probuje cos takiego:
> while(<>){s/{(\d+)}{(\d+)}/{$1}{$2}/}
> No i teraz - co podstawic pod $2, tak by nowe $2=$2+50?
> Z gory dzieki - na przekor twierdzeniom ostatnio na grupie ze perl
> umiera postanowilem sie nauczyc w nim regexpow.
W stylu "ochydny jednolinijkowiec":
#v+
while(<>){s/^{(\d+)}{(\d+)}/"{$1}{".($2+50)."}"/e
#v-
(IMHO) W stylu "jak jako tako szanujący się programista powinien":
#v+
while(<>){
if( my($start,$end,$text) = (/^{(\d+)}{(\d+)}(.*)$/) ) {
$_=sprintf("{%d}{%d}%s",$start,$end+50,$text;
}
}
#v-
Przy czym "jako tako szanujący się programista" sprawdzałby czy czasy
kolejnych napisów "nie nachodzą na siebie".
P.S.
Sam napisałem już kilka skryptów które "może i warto byłoby rozpowszechnić"
ale niestety napisane były w stylu "wstydziłbym się innym pokazać"
bo uważałem że są do użytku "jednoosobowego" ;-)
--
Andrzej Adam Filip : anfi@onet.eu : Andrzej.Filip@gmail.com
Zanika rękodzieło. Nawet w zbrodni.
-- Lec, Stanisław Jerzy (1909-1966)
Re: Jak w zmienic wartosc liczbowa w regexpie
Author: tomjas
Date: Mon, 29 Nov 2010 13:39
Date: Mon, 29 Nov 2010 13:39
22 lines
1792 bytes
1792 bytes
On Mon, 29 Nov 2010 11:56:32 +0000 (UTC), tomjas wrote:
> On Mon, 29 Nov 2010 11:33:44 +0000 (UTC), tomjas wrote:
>> Witam.
>> Temat dosc enigmatyczny wiec objasnie na przykladzie o co mi chodzi.
>> Klasyczny przyklad - napisy do filmu w formacie MicroDVD czyli
>> ...
>> {63245}{63250}Jakis tekst
>> ...
>> No wlasnie - jak teraz zwiekszyc te druga liczbe (napisy wyswietlaja sie
>> za krotko). Zapewne jako poczatkujacy zabieram sie od dupy strony
>> i probuje cos takiego:
>> while(<>){s/{(\d+)}{(\d+)}/{$1}{$2}/}
>> No i teraz - co podstawic pod $2, tak by nowe $2=$2+50?
>> Z gory dzieki - na przekor twierdzeniom ostatnio na grupie ze perl
>> umiera postanowilem sie nauczyc w nim regexpow.
>>
> Dobra - zrobilem to tak:
> while(<>){/{(\d+)}{(\d+)}/;$k=$2+50}
> choc wyczuwam ze nie jest to nazbyt eleganckie i na pewno mozna to
> zrobic lepiej...
A raczej tak:
while(<>){/{(\d+)}{(\d+)}/;$k=$2+50;s/$2/$k/}
Re: Jak w zmienic wartosc liczbowa w regexpie
Author: tomjas
Date: Mon, 29 Nov 2010 13:41
Date: Mon, 29 Nov 2010 13:41
22 lines
1742 bytes
1742 bytes
On Mon, 29 Nov 2010 13:03:35 +0100, Andrzej Adam Filip wrote:
> tomjas <tomjas@WYTNIJTOpoczta.onet.pl> pisze:
>> Witam.
>> Temat dosc enigmatyczny wiec objasnie na przykladzie o co mi chodzi.
>> Klasyczny przyklad - napisy do filmu w formacie MicroDVD czyli
>> ...
>> {63245}{63250}Jakis tekst
>> ...
>> No wlasnie - jak teraz zwiekszyc te druga liczbe (napisy wyswietlaja sie
>> za krotko). Zapewne jako poczatkujacy zabieram sie od dupy strony
>> i probuje cos takiego:
>> while(<>){s/{(\d+)}{(\d+)}/{$1}{$2}/}
>> No i teraz - co podstawic pod $2, tak by nowe $2=$2+50?
>> Z gory dzieki - na przekor twierdzeniom ostatnio na grupie ze perl
>> umiera postanowilem sie nauczyc w nim regexpow.
>
> W stylu "ochydny jednolinijkowiec":
> #v+
> while(<>){s/^{(\d+)}{(\d+)}/"{$1}{".($2+50)."}"/e
> #v-
Dzieki za odzew.
Bad evalled substitution pattern at -e line 1.
Re: Jak w zmienic wartosc liczbowa w regexpie
Author: Szymon Sokół
Date: Mon, 29 Nov 2010 18:44
Date: Mon, 29 Nov 2010 18:44
34 lines
2577 bytes
2577 bytes
On Mon, 29 Nov 2010 13:41:03 +0000 (UTC), tomjas wrote:
> On Mon, 29 Nov 2010 13:03:35 +0100, Andrzej Adam Filip wrote:
>> tomjas <tomjas@WYTNIJTOpoczta.onet.pl> pisze:
>>> Witam.
>>> Temat dosc enigmatyczny wiec objasnie na przykladzie o co mi chodzi.
>>> Klasyczny przyklad - napisy do filmu w formacie MicroDVD czyli
>>> ...
>>> {63245}{63250}Jakis tekst
>>> ...
>>> No wlasnie - jak teraz zwiekszyc te druga liczbe (napisy wyswietlaja sie
>>> za krotko). Zapewne jako poczatkujacy zabieram sie od dupy strony
>>> i probuje cos takiego:
>>> while(<>){s/{(\d+)}{(\d+)}/{$1}{$2}/}
>>> No i teraz - co podstawic pod $2, tak by nowe $2=$2+50?
>>> Z gory dzieki - na przekor twierdzeniom ostatnio na grupie ze perl
>>> umiera postanowilem sie nauczyc w nim regexpow.
>>
>> W stylu "ochydny jednolinijkowiec":
>> #v+
>> while(<>){s/^{(\d+)}{(\d+)}/"{$1}{".($2+50)."}"/e
>> #v-
> Dzieki za odzew.
> Bad evalled substitution pattern at -e line 1.
Bo ten kod nie był przewidziany do zastosowania w onelinerze uruchamianym z
prompta, tylko w skrypcie. A tak, to shell Ci nabruździł swoimi
podstawieniami.
--
Szymon Sokół (SS316-RIPE) -- Network Manager B
Computer Center, AGH - University of Science and Technology, Cracow, Poland O
http://home.agh.edu.pl/szymon/ PGP key id: RSA: 0x2ABE016B, DSS: 0xF9289982 F
Free speech includes the right not to listen, if not interested -- Heinlein H
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