Kom ihåg mig?
Home Menu

Menu


Regular expression-hjälp

Ämnesverktyg Visningsalternativ
Oläst 2008-01-07, 16:24 #1
tahoma tahoma är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2006
Inlägg: 8
tahoma tahoma är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2006
Inlägg: 8
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.
tahoma är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-01-07, 19:33 #2
kullervos avatar
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Dec 2003
Inlägg: 1 519
kullervo kullervo är inte uppkopplad
Bara ett inlägg till!
kullervos avatar
 
Reg.datum: Dec 2003
Inlägg: 1 519
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.
kullervo är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-01-07, 19:37 #3
tahoma tahoma är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2006
Inlägg: 8
tahoma tahoma är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2006
Inlägg: 8
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
tahoma är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-01-07, 21:44 #4
koalas avatar
koala koala är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Sep 2004
Inlägg: 1 154
koala koala är inte uppkopplad
Har WN som tidsfördriv
koalas avatar
 
Reg.datum: Sep 2004
Inlägg: 1 154
Det här kanske funkar bättre?
Kod:
<tr>\s*<td>(?<namn>.*?)</td>\s*<td>[^<\d]+(?<pris>\b\d+\b)[^<]*</td>\s*</tr>
koala är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-01-08, 07:15 #5
tahoma tahoma är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2006
Inlägg: 8
tahoma tahoma är inte uppkopplad
Nykomling
 
Reg.datum: Sep 2006
Inlägg: 8
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!
tahoma är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:09.

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