RegEx: Finde diesen ODER jenen String

  • Hallo

    Ich hab mich schon halb totgegooglet, nun frag ich :)

    Ich würd gern ein Pattern erstellen, mit dem ich mehrere verschiedene Strings matchen kann. Im folgenden Beispiel hätte ich gerne, dass "erster " oder "zweiter " gematcht wird...

    Leider find ich nur oder (also [ ]) für Buchstaben oder Zahlen, aber nicht für ganze Strings...

    [autoit]

    #include <array.au3>

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

    $random = Random(0,1,1)
    If $random = 0 Then
    $beispiel = "Dies ist ein erster text..."
    Else
    $beispiel = "Dies ist ein zweiter Text..."
    EndIf

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

    ; RegEx nun so machen, dass statt "erster " auch zweiter " gematcht würde
    $beispiel = StringRegExp($beispiel,"(.*)(erster.)(text).*$",1)

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

    ConsoleWrite($random & @CRLF)
    _ArrayDisplay($beispiel)

    [/autoit]

    Habt ihr ne Idee?

    Einmal editiert, zuletzt von klischee (18. März 2012 um 16:01)

  • Ist dieses Tutorial so bekannt, oder wieso verwundert es dich dass es nicht kenne oder gefunden hab? ^^

    Danke jedenfalls, hab's ergooglet, und es hilft mir irgendwie nicht wirklich weiter.

    Vielleicht weil im Gegensatz zu meinem Fall dort mehrere Variablen durchsucht werden (kenn &= noch nicht), während ich nur eine Variable benutze.

    Im folgenden wird "Beispieltext" zb nicht gematcht

    [autoit]

    #include <array.au3>

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

    $beispiel = "Dies ist ein Beispieltext"
    $regex = StringRegExp($beispiel,"(.*)(?:Beispieltext|Wasanderes)",1)
    _ArrayDisplay($regex)

    [/autoit]

    Edit: Hab's, das ?: ist für mein Fall unnötig.

    Danke nochmal.

  • Ist dieses Tutorial so bekannt, oder wieso verwundert es dich dass es nicht kenne oder gefunden hab? ^^


    Ja, das Tutorial von Seubo ist wirklich der Vater aller RegEx (meiner Meinung nach).

    Vielleicht weil im Gegensatz zu meinem Fall dort mehrere Variablen durchsucht werden (kenn &= noch nicht)


    Hier guck mal kurz erklärt:

    SQL
    [autoit]$string1 = 'Hello '
    $string2 = 'World!'
    $string1 &= $string2     ; Ist das selbe wie $string1 = $string1 & $string2, hängt also $string2 an $string1 an, in $string1 steht jetzt 'Hello World!'
    ;Das selbe geht auch mit Zahlen, hier aber ein 'PlusGleich':
    $zahl1 = 5
    $zahl2 = 3
    $zahl1 += $zahl2 ; $zahl1 ist jetzt 8, denn ausführlich geschrieben: $zahl1 = $zahl1 + $zahl2
    [/autoit]
  • Danke!

    Hab mittlerweile mir die ganzen Operatoren angeschaut, hätt ich mal eher machen sollen ;D