Pattern ausbauen .. und komme nicht weiter.

  • Sonstige

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von picoflop.

    Pattern ausbauen .. und komme nicht weiter.

    Hallo,

    Mit Tipps & Tricks wird mir nicht auf die schnelle geholfen werden können. Wenn das auch zufiel Arbeit mach für jemanden der die Lösung beinahe vor Augen hat, dann möchte ich trotzdem niemanden zu sehr beanspruchen, wehre aber sehr dankbar.

    Nun zum Problem.

    Der Quellcode der Seite aus der ich eine Information raus selektieren möchte.

    HTML-Quellcode

    1. <div class="detail_price_line">
    2. <div class="price_line_item">
    3. UVP:
    4. </div>
    5. <div class="price_line_item_p">
    6. €&nbsp;82,95 </div>
    7. <div class="price_line_item_right">
    8. <div class="price_line_availab_text">
    9. Verfügbarkeit: </div>
    10. <div class="price_line_availability">
    11. <img src="/extension/silver.project/design/silver.project/images/available_yes.gif" alt="auf Lager"> </div>
    12. </div>
    13. </div><!-- end detail_price_line -->
    14. <div class="detail_price_line">
    15. <div class="price_line_item"><span class="text_arial_15_grey_bold">Ihr Preis:</span></div>
    16. <div class="price_line_item_p"><span class="text_arial_15_grey_bold">€&nbsp;40,70</span></div>
    17. <div class="detail_price_ve">VE:
    18. 2
    19. </div>


    Was ich bisher zusammen gewürfelt habe:

    Visual Basic-Quellcode

    1. Muster = New Regex("((?<=item_main_article_art[\s\w""<>|: ]*?(Artikelnr:|EAN-Nr\.:)[\s ]*?)([0-9]+))", RegexOptions.Multiline) '_
    2. '& "|" _
    3. '& "((?<=price_line_availability[\s\w""<> ]*?img src=')[\w/.]+)", RegexOptions.Multiline)


    Mit dem ersten Teil bekomme ich aus einem weiter oben liegendem HTML Code [Artikelnr] Artikelnummer und EAN-Nr heraus.
    Mit dem zweiten die Lieferbarkeit " availablity... " doch da zwischen brauche ich noch das "UVP" und weiter unten "Ihr Preis"

    Möchte und kann mir jemand dabei helfen, bin mit regular expression nicht so fit, das was ihr da seht ist auch noch nicht perfekt, aber ich bügele das mit Makros in Excel gerade.
    Habe ich auch nur mit Hilfe aus Foren wie diesen zusammen basteln können.

    MFG
    Danke erst mal für die Antwort

    .. bin gerade dabei es einzubauen .. habe noch Schwierigkeiten .. bekomme eine Fehlermeldung

    Visual Basic-Quellcode

    1. "((?<=item_main_article_art[\s\w"<>|: ]*?(Artikelnr:|EAN-Nr\.:)[\s ]*?)([0-9]+))|((?<=price_line_item[\s\w"<> ]*?UVP:*?;(\d+,\d{2}).*?</div>)" wird analysiert - Nicht genügend )-Zeichen.


    gebe aber nicht so schnell auf... - Wehre toll, falls ich es nicht Schafe noch Hilfe bekommen könnte.

    Wenn auch nicht, ist mir das eine große Hilfe, Danke noch mal!!
    Hier ein kleines Konsolen-Beispiel:

    Visual Basic-Quellcode

    1. Imports System.Text.RegularExpressions
    2. Module Module1
    3. Sub Main()
    4. Dim txt$
    5. txt = "<div class=detail_price_line> <div class=price_line_item> UVP: </div> <div class=price_line_item_p> €&nbsp;82,95 </div> <div class=price_line_item_right> <div class=price_line_availab_text> Verfügbarkeit: </div> <div class=price_line_availability> <img src=/extension/silver.project/design/silver.project/images/av40,70xx,yyailable_yes.gif alt=auf Lager> </div> </div> </div><!-- end detail_price_line --> <div class=detail_price_line> <div class=price_line_item><span class=text_arial_15_grey_bold>Ihr Preis:</span></div> <div class=price_line_item_p><span class=text_arial_15_grey_bold>€&nbsp;40,70</span></div> <div class=detail_price_ve>VE: 2 </div>"
    6. Dim r As Regex = New Regex("Ihr Preis:.*?;(\d+,\d{2}).*?</div>", RegexOptions.IgnoreCase Or RegexOptions.Multiline)
    7. Dim m As Match = r.Match(txt)
    8. If (m.Success) Then
    9. Dim iPreis = m.Groups(1)
    10. Console.WriteLine("Ihr Preis = " & iPreis.ToString())
    11. End If
    12. Console.ReadLine()
    13. End Sub
    14. End Module


    Am Besten, du machst erstmal für jede Suche ein eigenes Regex.