grundlegendes zu StringRegExp

  • $var = 123
    MsgBox(0,"1",StringRegExp($var,"\d{1,2}"))

    $var = "Herbert123"
    MsgBox(0,"a",StringRegExp($var,"\A{4,16}"))

    die erste ist wahr, obwohl die zahl doch eine ziffer zuviel hat

    und die zweite sollte doch wahr statt unwahr sein oder was hab ich falsch gemacht?

  • Moin,

    Was Du falsch gemacht hast ?
    Nichts.

    Im ersten Falle findet StringRegExp 12 und 3, da das Suchmuster "finde Zahl mit mindestens einer, aber höchstens zwei Stellen" von dir definiert wurde.
    Bei einem "verbrauchendem" Suchmuster ergibt das eben 12 und 3.

    Im zweiten Fall ist dein Suchmuster ungültig. (@error = 2)
    In dem Suchmuster suchst Du nach ... nichts.


    LG
    Greenhorn


  • wie wäre es denn dann richtig?
    im ersten fall möchte ich prüfen ob die variable eine zahl im raum von 0-99 ist
    und im zeiten ob der string der variablen zwischen 4 und 16zeichen lang ist und nur aus buchstaben (groß und klein) und zahlen besteht

    • Offizieller Beitrag

    Hallo,

    so sollte es gehen.

    [autoit]

    $var = "123"
    MsgBox(0,"1",StringRegExp($var,"^\d{1,2}$"))

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

    $var = "Herbert123"
    MsgBox(0,"a",StringRegExp($var,"^[[:alnum:]äöüÄÖÜß]{4,16}$"))

    [/autoit]
    • Offizieller Beitrag

    oder so

    Spoiler anzeigen
    [autoit]

    $var = 123
    MsgBox(0, "1", _nullBis99($var))

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

    $var = "Herbert123"
    MsgBox(0, "a", StringRegExp($var, "\A\w{4,16}$"))

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

    Func _nullBis99($wert)
    If StringRegExp($var, "\A\d{1,2}$") Then Return 1
    Return 0
    EndFunc ;==>_nullBis99

    [/autoit]

    Mega

  • ich korrigiere Xeno ja nur ungern aber
    bei seiner 2. RegExp wird auch der _ als Match angesehen.

    Zitat

    im ersten fall möchte ich prüfen ob die variable eine zahl im raum von 0-99 ist
    und im zeiten ob der string der variablen zwischen 4 und 16zeichen lang ist und nur aus buchstaben (groß und klein) und zahlen besteht


    ich denke korrekt wäre:

    Spoiler anzeigen
    [autoit]


    $var = 99
    MsgBox(0,"1",StringRegExp($var,"^\d{1,2}$"))

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

    $var = "Herbert123456789"
    MsgBox(0, "a", StringRegExp($var, "^[[:alnum:]]{4,16}$"))

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • ahh danke, das "^" und "$" waren was ich unter anderem suchte.

    nicht gerade hilfreich ist, dass es eine neuere version von http://www.autoit.de/dokumentation/…tringRegExp.htm gibt, von der aber auf der seite nichts genannt wird und veraltet steht auch nicht dran. und mit google hab ich die zuerst gefunden....

    aber ich suche auch noch die neue version von:
    \A Entspricht jedem alphanumerischen Zeichen (a-z, A-Z, 0-9).
    was anscheinend das ist:
    \w Findet Buchstaben: a-z, A-Z oder Unterstrich (_).
    weil \w scheint auch zahlen mit einzuschliessen. kann das jemand bestätigen?
    $var = "Herbert_123"
    MsgBox(0,"a",StringRegExp($var,"^\w{4,16}$"))

    somit ist meine frage gibt es ne neue kurzform (backshlash mit buchstabe) für nur buchstaben?
    und die zeichenklassen funzen bei mir auch nicht:
    $var = "Herbert123"
    MsgBox(0,"a",StringRegExp($var,"^[:alnum:]{4,16}$"))
    ergibt 0
    aja ok muss doppelklammer sein
    $var = "Herbert123"
    MsgBox(0,"a",StringRegExp($var,"^[[:alnum:]]{4,16}$"))

  • wenn Du :classes angibst, brauchst Du doppelte [[...]]
    siehe:

    Spoiler anzeigen
    [autoit]


    $var = "Herbert123456789"
    MsgBox(0, "a", StringRegExp($var, "^[[:alnum:]]{4,16}$"))

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • wenn Du :classes angibst, brauchst Du doppelte [[...]]
    siehe:

    Spoiler anzeigen
    [autoit]


    $var = "Herbert123456789"
    MsgBox(0, "a", StringRegExp($var, "^[[:alnum:]]{4,16}$"))

    [/autoit]

    jojo hab für mein post so lange gebraucht, da hatteste die frage schon beantwortet bevor sie gestellt war *G

    muss man nicht die einzelnen sets mit "," trennen? weil irgendie geht beides
    $var = "1,234,567"
    MsgBox(0,"1",StringRegExp($var,"^[0-9\,]+$"))
    MsgBox(0,"2",StringRegExp($var,"^[0-9,\,]+$"))

    Einmal editiert, zuletzt von diepfeile (16. April 2009 um 22:36)

    • Offizieller Beitrag

    Hallo,

    \w findet auch 0-9, da wurde wohl bei der Übersetzung was vergessen.