Avatar billede decrypto Nybegynder
22. januar 2007 - 15:15 Der er 17 kommentarer

Uddrag noget fra en path

jeg har forskellige paths, og de kan se ud på følgende måde:

'/Apotek/Medicin/Piller/Pinex.aspx'
'/Apotek/Medicin/Piller/'
'Apotek/Medicin'
'/Motor/Biler/Ford'
'/Motor/Biler/Ford/Mondeo.aspx'

Reglen skal være, at jeg skal have 'malke' de to sidste niveauer ud.

'/Apotek/Medicin/Piller/Pinex.aspx' -> 'Medicin/Piller'
'/Apotek/Medicin/Piller/' -> 'Medicin/Piller'
'Apotek/Medicin' -> 'Apotek/Medicin'
'/Motor/Biler/Ford' -> 'Biler/Ford'
'/Motor/Biler/Ford/Mondeo/Expressive.aspx' -> 'Ford/Mondeo'

'->' betyder at den har været igennem et regex.

Er der nogen der kan hjælpe, er nemlig ikke stærk i regular expressions.
Avatar billede decrypto Nybegynder
22. januar 2007 - 15:17 #1
Strengen jeg får ud, skal også se ud som angivet.....dvs ingen '/' forrest eller bagerst. Kun imellem for at adskille de to strenge.
Avatar billede decrypto Nybegynder
22. januar 2007 - 16:30 #2
Gør egentligt ikke noget hvis '/' kommer foran eller bagved....det skal jeg nok ordne programmatisk....
Avatar billede jensgram Nybegynder
22. januar 2007 - 16:58 #3
Du skriver ikke noget om sprog, så får en PHP-løsning:

$match = preg_match('^\/[^\/]+\/([^\/]+\/[^\/]+)(\/|$)', $str, $matches);

kig så i $matches:

print_r($matches);
Avatar billede jensgram Nybegynder
22. januar 2007 - 17:02 #4
Og det virkede jo slet ikke :P

Dette er testet:

<?php

$s = array('/Apotek/Medicin/Piller/Pinex.aspx',
'/Apotek/Medicin/Piller/',
'Apotek/Medicin',
'/Motor/Biler/Ford',
'/Motor/Biler/Ford/Mondeo.aspx');

foreach ($s as $str) {

$match = preg_match('@(^|/[^/]+/)([^/]+/[^/]+)(/|$)@', $str, $matches);
if ($match) {
    print $str . ' -> ' . $matches[2] . "\n";
}

}

?>
Avatar billede plx Nybegynder
22. januar 2007 - 17:23 #5
Hvad skal afgøre om sidste led er et bibliotek eller en fil?
Avatar billede decrypto Nybegynder
22. januar 2007 - 17:24 #6
Hmmm det er ellers i C#, men regulære udtryk er vel det samme
Avatar billede decrypto Nybegynder
22. januar 2007 - 17:28 #7
Udover det så skal, der ikke splittes på strenge eller noget som helst. Strengen jeg vil RegExp'e er dynamisk, og jeg kender ikke altid formatet. De eksempler jeg har angivet er dem, der i det regulære udtryk skal være regler for.
Avatar billede decrypto Nybegynder
22. januar 2007 - 17:29 #8
sidste led er altid bilblioteket som filen ligger i.
Avatar billede decrypto Nybegynder
22. januar 2007 - 17:30 #9
...og før den biblioteket.... ikke mere.
Avatar billede jensgram Nybegynder
22. januar 2007 - 17:51 #10
Jo, regulære udtryk bør være ens langt hen ad vejen.

Kan '@(^|/[^/]+/)([^/]+/[^/]+)(/|$)@' bruges? Den giver samme resultat som du har skrevet i spm (som match 2)
Avatar billede decrypto Nybegynder
22. januar 2007 - 19:59 #11
Hmmm den virker ikke....

Jeg har behov for et udtryk, der kan tage alle flg. tekst strenge:

'/Apotek/Medicin/Piller/Pinex.aspx' -> 'Medicin/Piller'
'/Apotek/Medicin/Piller/' -> 'Medicin/Piller'
'Apotek/Medicin' -> 'Apotek/Medicin'
'/Motor/Biler/Ford' -> 'Biler/Ford'
'/Motor/Biler/Ford/Mondeo/Expressive.aspx' -> 'Ford/Mondeo'

Som man kan se...er jeg kun interesseret i de sidste to mapper ekskl. filen (her aspx filen)

Håber der er nogle tunge regex drenge herinde.....
Avatar billede jensgram Nybegynder
22. januar 2007 - 21:15 #12
Ups - den sidstnævnte glipper. Det havde jeg overset.
Avatar billede jensgram Nybegynder
22. januar 2007 - 21:35 #13
Jeg tror desværre ikke mine evner rækker længere end til denne: @([^/]+/[^/.]+)(/[^/]*)?$@

Den giver
0: /Apotek/Medicin/Piller/Pinex.aspx -> Medicin/Piller
1: /Apotek/Medicin/Piller/ -> Medicin/Piller
2: Apotek/Medicin -> Apotek/Medicin
3: /Motor/Biler/Ford -> Motor/Biler # Her er fejlen - den matcher for tidligt
4: /Motor/Biler/Ford/Mondeo/Expressive.aspx -> Ford/Mondeo

Jeg kan ikke lige lure, hvordan man klarer den. Desværre.
Avatar billede decrypto Nybegynder
24. januar 2007 - 17:19 #14
(?<parent>[^/]+)/(?<child>[^/]+)/?$

Sådan :-)
Avatar billede decrypto Nybegynder
24. januar 2007 - 17:22 #15
Fandt ud af at jeg ikke behøvede filtrering af filer....
Avatar billede jensgram Nybegynder
24. januar 2007 - 19:11 #16
Hehe - nå ok, ja det gjorde det jo en tand nemmere ;)
Avatar billede jensgram Nybegynder
03. februar 2007 - 15:21 #17
Lukketid?
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