/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
tage specifik del af streng (begynder)
Fra : Michael Andreasen


Dato : 07-05-03 12:01

Hey.. jeg har

$line="......spam (7.7/3.0) for... mere tekst";

Jeg ønsker de 2 tal hhv 7.7 og 3.0 og af denne linie. Tallene kan variere en
smule i størrelse og kan således også være 10.0/10.0 og 100.0/100.0

Jeg har fundet uf af så meget, at hvis jeg benytter split så kan jeg splitte
linien med /\( og igen med /\/ - Det er altid eneste parantes for slash der
er i linien.

Er der nogen der kan hjælpe mig lidt på vej? Jeg ønsker ikke en færdig
løsinng, men et fingerpeg i rigtige retnining :)

--
Med Venlig Hilsen
Michael Andreasen




 
 
Lars Balker Rasmusse~ (07-05-2003)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 07-05-03 12:18

"Michael Andreasen" <maskinen2000@hotmail.com> writes:
> Hey.. jeg har
>
> $line="......spam (7.7/3.0) for... mere tekst";
>
> Jeg ønsker de 2 tal hhv 7.7 og 3.0 og af denne linie.

Regex er din ven.

if ($line =~ /\((\d+\.\d+)\/(\d+\.\d+)\)/) {
print "$1/$2\n";
}
--
Lars Balker Rasmussen                  "S.M.R.T."

Michael Andreasen (07-05-2003)
Kommentar
Fra : Michael Andreasen


Dato : 07-05-03 12:39

"Lars Balker Rasmussen" <lars@balker.org> wrote in message
news:0fr87bngym.fsf@laphroaig.balker.org...

> > Hey.. jeg har
> > $line="......spam (7.7/3.0) for... mere tekst";
> > Jeg ønsker de 2 tal hhv 7.7 og 3.0 og af denne linie.
>
> Regex er din ven.
> if ($line =~ /\((\d+\.\d+)\/(\d+\.\d+)\)/) {
> print "$1/$2\n";
> }
> --
> Lars Balker Rasmussen "S.M.R.T."

Først tak til både dig og Peter for jeres hjælp.

Jeg prøvede mig lidt frem og havde i farten glemt at det også kunne være en
negativ værdi (-10.0/3.0) Jeg "hackede" mig så frem til at dette virkede
(næsten)

if ($line =~ /\(\-?(\d+\.\d+)\/(\-?\d+\.\d+)\)/) {

Men tallet kom ikke ud i negativ værdi i ($1 $2) f.eks. blev -13.6 til 13
hvilket ikke er meningen når jeg skal tælle sammen :)

Og hvad betyder \d+ Og er der nogen (gode) steder hvor dette kan slås op?
Jeg har googlet mig igennem en del turorials, men synes ikke at kunne finde
noget?

Mvh
Michael



Peter Makholm (07-05-2003)
Kommentar
Fra : Peter Makholm


Dato : 07-05-03 12:42

"Michael Andreasen" <maskinen2000@hotmail.com> writes:

> if ($line =~ /\(\-?(\d+\.\d+)\/(\-?\d+\.\d+)\)/) {



> Men tallet kom ikke ud i negativ værdi i ($1 $2) f.eks. blev -13.6 til 13
> hvilket ikke er meningen når jeg skal tælle sammen :)

Fordi dit første \- står på den forkerte side af den parentes der
opsamler til $1.

> Og hvad betyder \d+ Og er der nogen (gode) steder hvor dette kan slås op?

Læs perlre-manualsiden.

--
Peter Makholm | What if:
peter@makholm.net | Tanenbaum had convinced Linus that his
http://hacking.dk | operating system really was obsolete

Michael Andreasen (07-05-2003)
Kommentar
Fra : Michael Andreasen


Dato : 07-05-03 13:07

"Peter Makholm" <peter@makholm.net> wrote in message
news:87wuh33rx0.fsf@xyzzy.adsl.dk...
> Fordi dit første \- står på den forkerte side af den parentes der
> opsamler til $1.
>
> > Og hvad betyder \d+ Og er der nogen (gode) steder hvor dette kan slås
op?
>
> Læs perlre-manualsiden.
> Peter Makholm | What if:

Ja nu virker det. Og i perldoc perlre fandt jeg d=match digit caracter og +
1 or more times.

Så jeg takker. og beklager disse grønne spørgsmål, men selvom man prøver går
man istå indimellem :o/

Mvh
Michael Andreasen



Thorbjoern Ravn Ande~ (08-05-2003)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 08-05-03 00:32

Peter Makholm <peter@makholm.net> writes:

> > Og hvad betyder \d+ Og er der nogen (gode) steder hvor dette kan slås op?
>
> Læs perlre-manualsiden.

Rettere: Læs "perldoc perlre".

At det er manualsider er - efter min mening - en uskik.

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn

Lars Balker Rasmusse~ (07-05-2003)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 07-05-03 12:45

"Michael Andreasen" <maskinen2000@hotmail.com> writes:
> Jeg prøvede mig lidt frem og havde i farten glemt at det også kunne være en
> negativ værdi (-10.0/3.0) Jeg "hackede" mig så frem til at dette virkede
> (næsten)
>
> if ($line =~ /\(\-?(\d+\.\d+)\/(\-?\d+\.\d+)\)/) {

Du skal have -? med ind i parenteserne, der opsamler til $1 og $2.
\ før - er ikke nødvendigt.

> Og hvad betyder \d+ Og er der nogen (gode) steder hvor dette kan slås op?
> Jeg har googlet mig igennem en del turorials, men synes ikke at kunne finde
> noget?

perldoc perlre
--
Lars Balker Rasmussen                  "S.M.R.T."

Peter Makholm (08-05-2003)
Kommentar
Fra : Peter Makholm


Dato : 08-05-03 07:22

Thorbjoern Ravn Andersen <nospam0000@unixsnedkeren.dk> writes:

> Rettere: Læs "perldoc perlre".
>
> At det er manualsider er - efter min mening - en uskik.

Det er en manualside hvad enten man gemmer det som troff eller pod.

--
Peter Makholm | First you fall in love with Antarctica, and then it
peter@makholm.net | breaks your heart
http://hacking.dk | -- Antarctica

Thorbjoern Ravn Ande~ (10-05-2003)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 10-05-03 09:08

Peter Makholm <peter@makholm.net> writes:

> > At det er manualsider er - efter min mening - en uskik.
>
> Det er en manualside hvad enten man gemmer det som troff eller pod.

Nu er vi vist ude i en definitionssag.

Jeg har arbejdet på et system hvor TCL manualsiderne var lagt ind på
lige fod med resten. Det var godt nok sjældent at jeg havde brug for
dokumentations af TCK's funktioner, men jeg fik dem tit når jeg slog
op.

Hvis de røg ind i et afsnit "p" istedet for 1-8 var det i orden.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn

Peter Makholm (07-05-2003)
Kommentar
Fra : Peter Makholm


Dato : 07-05-03 12:18

"Michael Andreasen" <maskinen2000@hotmail.com> writes:

> Jeg har fundet uf af så meget, at hvis jeg benytter split så kan jeg splitte
> linien med /\( og igen med /\/ - Det er altid eneste parantes for slash der
> er i linien.

Jeg ville nok umidelbart lave et regulært udtryk. m|\((\d+)/(\d+)\)|,
så har du de to tal i $1 og $2.

--
Peter Makholm | 'Cause suicide is painless
peter@makholm.net | It brings on many changes
http://hacking.dk | And I can take or leave it if I please
| -- Suicide is painless

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste