RegEx Hilfe!

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von RazerElite.

    HI ich brauche hilfe mit RegEx,

    bin relative neu in dem bereich (regex) ich will eine textbox nach einner nummer auslesen und zwar soll mir das programm die nummer nur anzeigen wenn davor (Es gibt momentan eine Wortmeldung.) steht ....

    der ganze text sieht so aus:

    Es gibt momentan eine Wortmeldung.
    NummerKostenTaktungStatus
    mixer6:1318954043.8728600497275957452Up


    das hir ist die nummer die er auslesen soll ist immer verschieden 00497275957542...

    lg razer elite

    danke im vorraus für eure hilfe
    Sieht nach ner deutschen Telefonnummer aus. Das Pattern würde ich nach deiner Beschreibung so machen :
    "mixer(?<nummer>([0-9]+)?)\:(?<kosten>([0-9]+)?)\.(?<taktung>([0-9]+)?)(?<status>([a-zA-Z]+)?)"
    Kannst natürlich auch vorgefertigte Gruppen wie :alnum: oder :alpha: nehmen.
    danke das problehm ist das hir gibts es
    so:

    Es gibt momentan keine Wortmeldung.

    Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.

    NummerKostenTaktungStatus
    mixer6:1318957573.8774400497275952252Up

    und so:

    Es gibt momentan eine Wortmeldung.
    NummerKostenTaktungStatus
    mixer6:1318957573.8774400497275952252Up

    Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.

    NummerKostenTaktungStatus
    mixer6:1318957573.87744unmute00497275952252Up

    ich will aber das die nummer nur rausgefiltert wird wenn sie hir drin steht :

    Es gibt momentan eine Wortmeldung.
    NummerKostenTaktungStatus
    mixer6:1318957573.8774400497275952252Up

    anschliesen soll das programm mir nur die nummer anzeigen (in txtbox schreiben)
    wie geht das?

    danke für deine hilfe
    Ist die Nummer immer gleichlang ? Dann kannst du ja mit Substring arbeiten.
    ok danke aber liest das dan nicht auch die anderen nummern mit aus?

    wil ja nur das die nummer ausgelesen wird wenn Obendrüber steht Es gibt eine Wortmeldung.



    die seite sieht wie folgt aus:



    Es gibt momentan eine Wortmeldung.
    NummerKostenTaktungStatus
    mixer6:1318957573.8774400497275952252Up

    Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.

    NummerKostenTaktungStatus
    mixer6:1318957573.87744unmute00497275952252Up



    unten sind die teilnemenden nummern und oben die die sich meldet will nur das mir das programm die nummer die sich meldet zeigt und nicht die darunter. sprich nur die obere!
    ok wie würde ich das das brüfen bin in thema regex neu wäre net wennn ihr es ein wenig erklären könntet :D

    will das nur die obere nummer ausgelesen wird wenn sie vorhanden ist.

    im unteren bereich (hier)!

    Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.

    NummerKostenTaktungStatus
    mixer6:1318957573.87744unmute00497275952252Up

    können auch mehrere nummern stehen aber ich möchte nur das im oberen teil (hier)



    Es gibt momentan eine Wortmeldung.
    NummerKostenTaktungStatus
    mixer6:1318957573.8774400497275952252Up

    die nummer angezeigt wird!

    nicht die unteren auch noch



    Danke für eure hilfe
    Das müsste eigentlich funktionieren (tat es zumindest beim Testlauf ^^ :(

    VB.NET-Quellcode

    1. If TextBox1.Text.Trim.StartsWith("Es gibt momentan eine Wortmeldung.") Then
    2. Dim Anfang As Integer = TextBox1.Text.IndexOf("0049")
    3. Dim Ende As Integer = TextBox1.Text.IndexOf("Up")
    4. TextBox2.Text = TextBox1.Text.Substring(Anfang, Ende - Anfang)
    5. End If

    Textbox1 Inhalt war dieser:
    Spoiler anzeigen

    Quellcode

    1. Es gibt momentan eine Wortmeldung.
    2. NummerKostenTaktungStatus
    3. mixer6:1318957573.8774400497275952252Up
    4. Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.
    5. NummerKostenTaktungStatus
    6. mixer6:1318957573.87744unmute00497275952252Up

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Unwesen“ () aus folgendem Grund: ..

    Regexpattern wäre dann 0049(?<nummer>[0-9]+?)Up aber mit Unwesen's Beispiel brauchste weder Regex noch 0049 bei der Nummer dranzuhängen.
    unmute steht vor 0049, der Substring beginnt bei mit "0049" und endet bei vor "Up".
    Außerdem, wenn ich das richtig beobachtet habe, steht sowas eh nur im "unteren Bereich", welcher von meinem Code gar nicht erst berücksichtigt werden muss. ^^

    // Trotzdem, 100% treffsicher ist der Code nicht, könnte ja vorkommen, das mixer6:1318957573.87744 irgendwann mal 0049 enthält.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Unwesen“ () aus folgendem Grund: soviel Zeit muss sein

    ok danke hat mir sehr geholfen ... nur ein problehm wenn obentrüber was steht geht es nicht sprich so zb.

    hir:
    text....
    ........
    naechste

    Ansagen


    Es gibt momentan eine Wortmeldung.
    NummerKostenTaktungStatus
    mixer3:1319026435.6321700497275953452Up

    Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.

    NummerKostenTaktungStatus
    mixer3:1319026435.63217unmute00497275953452Up

    wenn der text mit "Es gibt momentan eine Wortmeldung." anfängt funktioniertes super ... leider steht dafor noch bischen was

    vielen dank
    hat mir sehr geholfen :D

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „RazerElite“ ()

    Theoretisch sollte der Code auch ohne die If Abfrage brauchbare Ergebnisse liefern, war unsicher ob sie benötigt wird, also hab ich sie eingebaut.

    VB.NET-Quellcode

    1. Dim Anfang As Integer = TextBox1.Text.IndexOf("0049")
    2. Dim Ende As Integer = TextBox1.Text.IndexOf("Up")
    3. TextBox2.Text = TextBox1.Text.Substring(Anfang, Ende - Anfang)


    Wenn eine Kontrolle aber nötig ist, gäbe es sicher einige Möglichkeiten, wie du vorgehen kannst.
    Zum Beispiel prüfen ob der IndexOf("Es gibt momentan keine Wortmeldung.") kleiner als IndexOf("Es gibt momentan eine Wortmeldung.") ist, sofern du meinem Gedankengang folgen kannst. ^^

    Wenn die erste Meldung, die in der Textbox gefunden wird "Es gibt momentan keine Wortmeldung." lautet, kann die Prüfung abgebrochen werden, wenn sie "Es gibt momentan eine Wortmeldung." lautet, darf die Telefonnummer extrahiert werden.

    Hab die Nacht durchgemacht, da kommen mir manchmal umständliche (?) Ideen.. Aber besser als nichts, oder? . ;)


    //E

    Ich blicke ich im Moment nicht mehr ganz durch, welchen Inhalt die TextBox1 nun alles haben kann, kommt ja ständig was neues. Ich kann net erkennen, was die Kontrollbedingungen sein müssen.. :

    Spoiler anzeigen

    Quellcode

    1. Es gibt momentan eine Wortmeldung.
    2. NummerKostenTaktungStatus
    3. mixer3:1319026435.6321700497275953452Up
    4. Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.
    5. NummerKostenTaktungStatus
    6. mixer3:1319026435.63217unmute00497275953452Up


    oder

    Quellcode

    1. Es gibt momentan keine Wortmeldung.
    2. NummerKostenTaktungStatus
    3. mixer3:1319026435.6321700497275953452Up
    4. Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.
    5. NummerKostenTaktungStatus
    6. mixer3:1319026435.63217unmute00497275953452Up


    oder

    Quellcode

    1. Es gibt momentan keine Wortmeldung.
    2. NummerKostenTaktungStatus
    3. mixer3:1319026435.6321700497275953452Up
    4. Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.
    5. NummerKostenTaktungStatus
    6. mixer3:1319026435.63217unmute00497275953452Up
    7. Es gibt momentan eine Wortmeldung.
    8. NummerKostenTaktungStatus
    9. mixer3:1319026435.6321700497275953452Up
    10. Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.
    11. NummerKostenTaktungStatus
    12. mixer3:1319026435.63217unmute00497275953452Up


    und so weiter.


    Woher erhält die Textbox überhaupt ihren Inhalt?

    :sleeping:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Unwesen“ ()

    HeHe, hab alles mögliche versucht aber einfach die If anfrage rauszunehmen hab ich nicht versucht, funktioniert nur leider nicht ... das programm spuckt mir dan 3 nummern raus :(

    da im text zimlich ganz oben noch "wahlwiederholungen" stehen.

    Die textbox bekommt ihren inhalt aus einer Webseite die ich auslese.

    der komplette inhalt der textbox ist dieser:

    Spoiler anzeigen
    Website durchsuchen Suche Erweiterte Suche SektionenMein Phonesty
    Konferenz Termine
    Anrufliste
    Mitschnitte
    Konto
    Kandel
    Abmelden
    Navigation
    Startseite Dienste
    Besonderheiten
    Preise
    FAQ
    Neues
    Kontakt
    Presse
    Impressum
    Self Service
    Persönliche Einstellungen
    Kontoeinstellungen
    Konferenzeinstellungen
    Administrative Rechte
    Tarifwechsel
    Anleitung downloaden
    Coupon code Konferenzsteuerung (xxxxx)
    Falls Probleme bei der Darstellung auftreten, klicken Sie bitte hier (einfache Version).
    Admin left the conference!
    Close
    Teilnehmer anrufenNummernAnrufen

    Diesem Teilnehmer Gastgeberrechte geben

    Bitte geben Sie hier die Telefonnummern der Konferenzteilnehmer durch Kommas getrennt ein. Fuer deutsche Nummern mit Ortsvorwahl (z.B. 086754431543), fuer internationale Nummern mit Landesvorwahl (z.B. 051554565434).
    Sie koennen auch Kurzwahlziffern eingeben (01 - 99).
    Webphone starten

    Screen-Show starten



    Konferenzen verbindenKonferenz-IDTeilnehmer-PINVerbinden

    Geben Sie bitte hier die Konferenz-ID und den Teilnehmer-PIN des anderen Konferenzraums ein, um diesen mit Ihrem Raum zu verbinden.


    Konferenz Funktionen





    Aktueller Kontostand
    xx.xx Euro

    Wahlwiederholung
    004972753452
    00497271934542
    00497275944354

    Kurzwahl
    name
    name
    name
    name
    name
    name
    naechste

    Ansagen


    Es gibt momentan eine Wortmeldung.
    NummerKostenTaktungStatus
    mixer5:1319035387.8879400497275951234Up

    Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.

    NummerKostenTaktungStatus
    mixer5:1319035387.88794unmute00497275951234Up


    Startseite Dienste Besonderheiten Preise FAQ Neues Kontakt Presse Impressum


    sry das ich so ungenau war! :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „RazerElite“ ()

    Gut, dann könntest du als erstes mal alles vor "Ansagen" entfernen, in deinem Beispieltext kommt das ja nur einmal vor...

    VB.NET-Quellcode

    1. TextBox1.Text = TextBox1.Text.Remove(0, TextBox1.Text.LastIndexOf("Ansagen"))
    2. Dim Anfang As Integer = TextBox1.Text.IndexOf("0049")
    3. Dim Ende As Integer = TextBox1.Text.IndexOf("Up")
    4. TextBox2.Text = TextBox1.Text.Substring(Anfang, Ende - Anfang)


    Übrig bleibt:
    Ansagen


    Es gibt momentan eine Wortmeldung.
    NummerKostenTaktungStatus
    mixer5:1319035387.8879400497275951234Up

    Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.

    NummerKostenTaktungStatus
    mixer5:1319035387.88794unmute00497275951234Up


    Startseite Dienste Besonderheiten Preise FAQ Neues Kontakt Presse Impressum


    Und wenn das immer noch net passt, solltest du jetzt mal selber weitertüfteln, hast im Grunde für alles was du benötigst ein Beispiel bekommen.^^


    //Edit

    Letzte Fassung :
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim Suchwort As String = "Ansagen"
    2. TextBox1.Text = TextBox1.Text.Remove(0, TextBox1.Text.LastIndexOf(Suchwort) + Suchwort.Length).Trim
    3. If TextBox1.Text.Trim.StartsWith("Es gibt momentan eine Wortmeldung.") Then
    4. Dim Anfang As Integer = TextBox1.Text.IndexOf("0049")
    5. Dim Ende As Integer = TextBox1.Text.IndexOf("Up")
    6. TextBox2.Text = TextBox1.Text.Substring(Anfang, Ende - Anfang)
    7. End If

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Unwesen“ ()

    "Ansagen


    Es gibt momentan eine Wortmeldung.
    NummerKostenTaktungStatus
    mixer5:1319035387.8879400497275951234Up

    Zur Zeit befindet sich 1 Teilnehmer in Ihrer Konferenz.

    NummerKostenTaktungStatus
    mixer5:1319035387.88794unmute00497275951234Up


    Startseite Dienste Besonderheiten Preise FAQ Neues Kontakt Presse Impressum "

    ok das spuckts mir jetzt raus und auch die richtige nummer kommt nur leider spuckt er mir die nummer auch raus wenn sich keiner meldet also bei der meldung "Es gibt momentan keine Wortmeldung" möchte aber das die nummer nur kommt wenn er bei "Es gibt momentan eine Wortmeldung." kommt.