String suchen

  • Hallo alle zusammen,

    ich habe ehrlich gesagt Probleme mit der RegExp function, ich krieg das alles einfach nicht hin :( Und es gibt sooo viele Parameter und Flags.

    mein Ziel ist es, von einem String in einer Variable, eine Uhrzeit zu suchen welche ich dann in einer anderen Variable abspeichere.

    Also um das zu verdeutlichen ein Beispiel:

    [autoit][/autoit][autoit][/autoit][autoit]

    $String="Blaaaaaaaaböa sdfdsfg <jsjdh> 12:23:43 sdfkm omsdopfkl" ;Das hier ist der String mit der Uhrzeit

    [/autoit][autoit][/autoit][autoit]

    $Uhzeit ;Und in der Variable will ich jetzt die 12:23:43 reinkriegen

    [/autoit][autoit][/autoit][autoit][/autoit]

    Wär cool wenn mir jemand eine Mustervorlage für eine RegExp oder eine andere Funktion senden kann ^^

    LG TaPS

    Du stehst auf epische keltische Musik? Ich auch! Also schau dir das Video an und hinterlass mir ein Feedback ;)

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    - *freu* TaPS

  • Okay, vielen Dank Oscar, das funktioniert soweit schon einmal!

    Zumindest in dem Beispiel, das Problem ist nun aber, das ich ein komplettes HTML Dokument in einer Variable abgespeichert habe und ich die Uhruzeit suche, das funktioniert mit der Funktion irgendwie nicht, könnte das an den Zeilenumbrüchen liegen? O.o

    Und könntest du, oder wer anders, vielleicht noch die Syntax davon erklären? Also von der Zeile:

    [autoit]

    StringRegExpReplace($String, '.+(\d{2}\:\d{2}\:\d{2}).+', '$1')

    [/autoit]

    :D Wäre echt toll!

    LG TaPS

    Du stehst auf epische keltische Musik? Ich auch! Also schau dir das Video an und hinterlass mir ein Feedback ;)

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    - *freu* TaPS

  • .+ beliebig viele Zeichen, bis das danach kommt. (Erster Treffer von dem danach wird genommen)
    () In den Klammern steht der Eigentliche Ausdruck, der gesucht wird
    .+ wieder beliebig viele Zeichen

    Die Klammer:
    \d Suche Zahl. Die {2} steht für die Anzahl der Zahlen
    \: Danach ein Doppelpunkt
    \d{2} Wieder 2 Zahlen
    \: Wieder ein Doppelpunkt
    \d{2} Wieder 2 Zahlen

    • Offizieller Beitrag

    Zumindest in dem Beispiel, das Problem ist nun aber, das ich ein komplettes HTML Dokument in einer Variable abgespeichert habe und ich die Uhruzeit suche, das funktioniert mit der Funktion irgendwie nicht, könnte das an den Zeilenumbrüchen liegen? O.o


    Na dann hänge doch mal das HTML-File an, zum testen.

    • Offizieller Beitrag


    Zumindest in dem Beispiel, das Problem ist nun aber, das ich ein komplettes HTML Dokument in einer Variable abgespeichert habe und ich die Uhruzeit suche, das funktioniert mit der Funktion irgendwie nicht, könnte das an den Zeilenumbrüchen liegen?

    Warum wird das nicht gleich in der Problembeschreibung erwähnt?
    Als nächstes kommt dann, dass in dem HTML-Dokument mehrere Uhrzeiten gespeichert sind und dann kommt, dass sie verschiedene Formate aufweisen, etc...
    Ist es wirklich so schwer eine vernünftige Problembeschreibung hinzukriegen? Lasst euch doch nicht jedes Detail aus der Nase ziehen.
    Wenn Du gleich die HTML-Datei mit gepostet hättest, dann hättest Du schon längst die Lösung.

    • Offizieller Beitrag

    @Oscar, was erwartest du nur? Einfach kann doch jeder. 90 % aller Problembeschreibungen sind doch das eigentliche Problem :whistling:

  • Hey Leute,

    Oscar : Verzeihung, aber ich kenn mich dann halt doch nicht so gut aus und wusste nicht das es relevant ist das HTML-Dokument als Anhang mit zu geben, da ich nicht wusste das der Befehl bei dem Dokument nicht funktioniert. Auserdem sei doch nicht gleich so energisch, ich meine das Forum ist doch dafür da um Leuten zu helfen die sich nicht gut auskennen und nicht um sie deswegen anzumeckern.(Verzeihung wenn das doch irgendwo in den Richtlinien steht, weil die habe ich nicht gelesen)

    @Alle:
    Hier der Link zu dem Dokument:
    https://www.dropbox.com/s/yd6j1ytora0d…omuhr.html?dl=0

    Wer was hat bitte melden :D Und schonmal Danke für die restlichen Meldungen, das mit der Syntax hab ich jetzt verstanden.

    LG TaPS

    Du stehst auf epische keltische Musik? Ich auch! Also schau dir das Video an und hinterlass mir ein Feedback ;)

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    - *freu* TaPS

    • Offizieller Beitrag

    Es geht nicht darum, dass ich Dich anmeckern will, sondern darum, dass Du nicht gleich schreibst was Du eigentlich vorhast.
    Du verrennst Dich in Deinen Lösungsweg (der im übrigen nicht mal funktioniert) und dabei gibt es viel einfachere Möglichkeiten.
    Zuerst mal:
    Die Homepage, die Du da aufgetrieben hast, generiert die Uhrzeit per Javascript. Javascript ist aber eine Scriptsprache, die auf dem Clientrechner läuft.
    Demzufolge ist das nicht die "Atomuhrzeit", sondern die Uhrzeit auf Deinem Rechner. Windows gleicht zwar standardmäßig die interne Uhrzeit mit einem NTP-Server ab, aber da kann es schonmal zu kleinen Abweichungen kommen.
    Willst Du sehen wie groß die Abweichungen sind, wäre es einfacher sich die korrekte Uhrzeit selbst von einem NTP-Server zu holen.
    Hier mal ein Script dafür:

    Spoiler anzeigen
    [autoit]


    #include <Date.au3>
    $time = _TimeSync()
    MsgBox(0, '', 'Rechnerzeit:' & @TAB & _NowCalc() & @CRLF & 'Atomzeit: ' & @TAB & $time)

    [/autoit] [autoit][/autoit] [autoit]

    ;**************************************************************************************************
    ; Ab hier beginnen die Funktionen, zum holen der Zeit aus dem Internet (Quelle: http://www.autoitscript.com/forum/)
    ;**************************************************************************************************
    Func _TimeSync()
    Local $ntpServer = '1.de.pool.ntp.org'
    UDPStartup()
    Dim $socket = UDPOpen(TCPNameToIP($ntpServer), 123)
    If @error <> 0 Then Return SetError(1)
    Local $status = UDPSend($socket, MakePacket('1b0e010000000000000000004c4f434ccb1eea7b866665cb00000000000000000000000000000000cb1eea7b866665cb'))
    ;~ Local $status = UDPSend($socket, MakePacket('1b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'))
    If $status = 0 Then Return SetError(1)
    Local $data = '', $a = TimerInit() ; Timer setzen, damit im Fehlerfall die Schleife abgebrochen wird
    While $data = ''
    $data = UDPRecv($socket, 100)
    Sleep(100)
    If TimerDiff($a) > 1000 Then ExitLoop ; Wenn Timer > 1sek. (Fehler), dann Schleife verlassen
    WEnd
    If $data <> '' Then
    UDPShutdown()
    Local $unsignedHexValue = StringMid($data, 83, 8); Extract time from packet. Disregards the fractional second.
    Local $value = UnsignedHexToDec($unsignedHexValue)
    Local $TZinfo = _Date_Time_GetTimeZoneInformation()
    Local $TZoffset = -(UnsignedToLong($TZinfo[1]) + (UnsignedToLong($TZinfo[4]) * ($TZinfo[0] < 2)) + (UnsignedToLong($TZinfo[7]) * ($TZinfo[0] = 2)))
    Local $UTC = _DateAdd('s', $value, '1900/01/01 00:00:00')
    Return _DateAdd('n', $TZoffset, $UTC)
    EndIf
    SetError(1)
    EndFunc ;==>_TimeSync
    ;**************************************************************************************************
    Func MakePacket($d)
    Local $p = ''
    While $d
    $p &= Chr(Dec(StringLeft($d, 2)))
    $d = StringTrimLeft($d, 2)
    WEnd
    Return $p
    EndFunc ;==>MakePacket
    ;**************************************************************************************************
    Func UnsignedHexToDec($n)
    Local $ones = StringRight($n, 1)
    $n = StringTrimRight($n, 1)
    Return Dec($n) * 16 + Dec($ones)
    EndFunc ;==>UnsignedHexToDec
    ;**************************************************************************************************
    ; http://support.microsoft.com/kb/189323
    ; Gibt Die Zahl mit Vorzeichen zurück.
    ; Bei Fehler (kleiner 0 oder größer MAXINT_4) wird der übergebene Wert zurückgegeben und @error auf 1 gesetzt.
    Func UnsignedToLong($value)
    Local Const $OFFSET_4 = 4294967296
    Local Const $MAXINT_4 = 2147483647
    If $value < 0 Or $value >= $OFFSET_4 Then Return SetError(1, 0, $value) ;' Overflow
    If $value <= $MAXINT_4 Then
    Return $value
    Else
    Return $value - $OFFSET_4
    EndIf
    EndFunc ;==>UnsignedToLong
    ;**************************************************************************************************

    [/autoit]
  • Yeaaah, das ist super, vielen Dank, damit lässt sich arbeiten ^^

    LG TaPS

    Du stehst auf epische keltische Musik? Ich auch! Also schau dir das Video an und hinterlass mir ein Feedback ;)

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    - *freu* TaPS