Avatar billede lmdthel Nybegynder
10. marts 2003 - 22:15 Der er 7 kommentarer og
1 løsning

Hjælp til regexp splitter..

Hi Rødder

Hvordan skal jeg bære mig ad med at splitte den string:

A1/APZ "EC65/30/T0204A/" 027 030115  1335


skulle gerne ende op med at have:
A1
APZ
EC65/30/T0204A/
027
030115
1335

///Thomas
Avatar billede erikjacobsen Ekspert
10. marts 2003 - 22:27 #1
Hvis den altid ser sådan ca. sådan ud, så vil dette
måske virke - utestet:

$s='A1/APZ "EC65/30/T0204A/" 027 030115  1335';
if ($s =~ /^(\w+)\/(\w+) +"(.*?)" +(\d+) +(\d+) +(\d+)/) {
  ($a1,$a2,$a3,$a4,$a5,$a6)=($1,$2,$3,$4,$5,$6);
  print "$a1 - $a2 - $a3 - $a4 - $a5 - $a6\n";
}
Avatar billede lmdthel Nybegynder
11. marts 2003 - 09:24 #2
oki virkede PERFEKT, hvis du har tid, så har jeg 1 spørgsmål mere, som det er nu ligger vi 030115 (dato) og 1335 (tid) i 2 forskellige variabler, men hvad nu hvis jeg gerne ville have dem samlet i en enkelt som hedder $date_time? de skulle så være uden mellemrummet så det så hedder 0301151335

///Thomas
Avatar billede erikjacobsen Ekspert
11. marts 2003 - 10:13 #3
($a1,$a2,$a3,$a4,$date_time)=($1,$2,$3,$4,$5.$6);

PS: Ingen point til mig.
Avatar billede lmdthel Nybegynder
11. marts 2003 - 12:54 #4
Tak for hjælpen igen igen..

ås har jeg sku også lært en del i dag..
Avatar billede lmdthel Nybegynder
12. marts 2003 - 09:38 #5
Så Erik nu er den gal igen :-)

nej nu er jeg jo blevet helt pjattet med at skulle påde her regexp til at virker..meeen det er sku ikke helt nemt..kan du ikke se på denne her:

*** ALARM 023 A1/APZ "2YU17R1/00/00C_"U 000011 0526

Den skal splittes på følgende måde:
*** ALARM
023
A1
APZ
2YU17R1/00/00C_
U
000011
0526

Jeg forsøgt at kigge påden du lavede før...meeeen edt kniber sku med at få denne her jeg selv har lavet til at virke..men nu er det jo pgså mine første regexp'er :-)

Mit forslag var:
if ($s =~ /^(\Q<***>\E\s<ALARM>) +(\d+) +(\w+)\/(\w+) +"(.*?)"(\w+) +(\d+) +(\d+) +(\d+)/)

Det er en eller anden dum ting der driller, jeg tror det går galt med *** ALARM. hvordan ville du lave den ??

///Thomas
Avatar billede erikjacobsen Ekspert
12. marts 2003 - 09:47 #6
Utestet

if ($s =~ /^(\*\*\* +ALARM) +(\d+) +(\w+)\/(\w+) +"(.*?)"(\w+) +(\d+) +(\d+) +(\d+)/i)
Avatar billede lmdthel Nybegynder
12. marts 2003 - 10:01 #7
Mange takker..jeg fik den også lige til at virke med (\Q*** ALARM\E)

så nu tror jeg at jeg efter hånde har lært hvordan de hænger sammen..puhaaa så kan resten af perl da kun være nemmere :-)

Tak for hjælpen Erik..lige et spørgsmål, hvad sidder du egentlig og laver til dagli, jeg syntes næsten altid du er her til at komme med gode svar/råd ??

///Thomas
Avatar billede erikjacobsen Ekspert
12. marts 2003 - 10:09 #8
sssh, sig det ikke til min chef :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester