![]() |
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. |
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. |
Citat:
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 |
Det här kanske funkar bättre?
Kod:
<tr>\s*<td>(?<namn>.*?)</td>\s*<td>[^<\d]+(?<pris>\b\d+\b)[^<]*</td>\s*</tr> |
Citat:
|
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