WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Regular expression-hjälp (https://www.wn.se/forum/showthread.php?t=26084)

tahoma 2008-01-07 16:24

Hej!
Jag behöver hjälp med att skapa ett regular expression. Låt oss säga att vi har följande data:

<tr>
<td>Snygg t-shirt</td>
<td>Pris: 199:-</td>
</tr>
<tr>
<td>ful t-shirt</td>
<td>Pris: 99:-</td>
</tr>
<tr>
<td>Cool jacka</td>
<td>Pris: 599:-</td>
</tr>

Om jag nu vill plocka ut namn och priser på ovanstående produkter så kan jag skriva ett reg.exp som ser ut så här:
<tr>\s*<td>(?<namn>.*?)</td>\s*<td>Pris: (?<pris>\d*):-</td>\s*</tr>

Men om det nu är en produkt som saknar pris:
<tr>
<td>Snygg t-shirt</td>
<td>Pris: 199:-</td>
</tr>
<tr>
<td>ful t-shirt</td>
<td>Slutsåld</td>
</tr>
<tr>
<td>Cool jacka</td>
<td>Pris: 599:-</td>
</tr>

Så kommer jag att hitta:
Snygg t-shirt, 199
ful t-shirt, 599

Har någon ett bra knep för att undvika detta? Helst skulle jag vilja att det hoppades över helt och hållet.

kullervo 2008-01-07 19:33

Ta hänsyn till </tr>. Dvs. ingen </tr> får finnas mellan produkt och pris.

Har du funderat på att parsa HTML-koden istället så du får ut en CSV eller "ASCII-tabell"? HTML-parsers kan du hitta färdiga att använda.

tahoma 2008-01-07 19:37

Citat:

Originally posted by kullervo@Jan 7 2008, 20:33
Ta hänsyn till </tr>. Dvs. ingen </tr> får finnas mellan produkt och pris.
Ja, det vore bra. Det luriga är att jag vet inte hur man skriver det. Vet du?

Jag får även fundera på att använda HTML-parser, men reg.exp. funkar bra för det mesta.

Tack för hjälpen

koala 2008-01-07 21:44

Det här kanske funkar bättre?
Kod:

<tr>\s*<td>(?<namn>.*?)</td>\s*<td>[^<\d]+(?<pris>\b\d+\b)[^<]*</td>\s*</tr>

tahoma 2008-01-08 07:15

Citat:

Originally posted by koala@Jan 7 2008, 22:44
Det här kanske funkar bättre?
Kod:

<tr>\s*<td>(?<namn>.*?)</td>\s*<td>[^<\d]+(?<pris>\b\d+\b)[^<]*</td>\s*</tr>

Ja, det funkar ju utmärkt. Tack!


Alla tider är GMT +2. Klockan är nu 17:41.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson