Domino 9 und frühere Versionen > ND9: Entwicklung
@Matches oder RegEx in Notes Formelsprache
habemehl:
Moin, Moin zusammen,
ich versuche folgende Zeile möglichst gut mit RegEx zu beschreiben.
--- Code: ---[Karl-Heinz Mustermann] Kalkül #YKBL557397530OE
--- Ende Code ---
Folgender Ausdruck hat mich bisher zum Erfolg geholfen:
--- Code: ---[+{!0-9}]*#*
--- Ende Code ---
Wie bekomme ich den vorgenannten String noch präziser beschrieben?
In den [] kommen nur "Namen" vor, gefolgt von einem - belibigem - Wort und nach der Raute (#) folgt eine ID unterschiedlicher Länger, aber nur mit Großbuchstaben und Ziffern.
Aktuell experimentiere ich mit folgendem Promt:
--- Code: ---@Prompt([Ok];"Test";@If(@Matches(@LowerCase("[Karl-Heinz S] Kalkül #YKBL557397530OE");"[+{!0-9}]*#*");"Passt";"Falsch"))
--- Ende Code ---
Folgende Ideen führen leider immer zu einem negativen Ergebnis ("Falsch")
*
* +{A-z} enthält keine Umlaute und keine Bindestriche etc.
* Eine Verkettung, z.B. +{A-zü} findet das "Kalkühl" ebenfalls nicht
Wie bekomme ich für die ID ein Pattern "Nur Großbuchstaben oder Ziffern" hin, +{A-Z0-9} klappt nicht?
:-:
Meine "Wissenquelle"
Vielen Dank und beste Grüße
Driri:
Für die ID müßte folgender Ausdruck funktionieren:
\#([A-Z0-9])+
habemehl:
Moin,
Danke für den Vorschlag. Leider funktioniert der Vorschlag nur bei Verwendung von Java.
Im @Formel Umfeld scheint das nicht möglich zu sein. :-:
Zunächst kam die Fehlermeldung "Ungültiges Textmuster", da in den @Funktionen geschweifte statt normale Klammern verwendet werden.
Beste Grüße
Martin
PS: Ich habe in meiner @Funktion jetzt das @LowerCase entfernt und für den Bereich der "ID" such ich nach "Keine kleinbuchstaben":
--- Code: ---@Prompt([Ok];"Test";@If(@Matches("[Karl-Heinz S] Kalkül #YKBL557397530OE";"[+{!0-9}]*#+{!a-z}");"Passt";"Falsch"))
--- Ende Code ---
PPS: Um den letzten Stern zu eleminieren wäre noch "Nur ein Wort" (analog \b) als Pattern nett, habe ich aber auch nicht gefunden.
Driri:
Ich habe in Notes noch nie mit RegEx gearbeitet. Vermutlich kommt Notes mit dem Slash nicht klar. Das übliche Vorgehen wäre dann eigentlich, einen doppelten Slash zu verwenden, also z.B. \\b.
Flachmann:
Ich glaube, @Matches() ist kein richtiges RegEx. :P
Dieses Pattern funktionierte bei mir für Deine genannten Anforderungen: "[+{!0-9}]*#+{A-Z0-9}"
In den eckigen Klammern alles außer Ziffern (also auch Umlaute und sämtliche Sonderzeichen), dann irgendein String in beliebiger Länge, Nummernzeichen, irgendein Text in Großbuchstaben und Ziffern ohne weitere Sonderzeichen (da eine ID im allgemeinen keine Sonderzeichen enthält).
Du könntest Dir auch die einzelnen Teil-Strings mit @Word(), @Left(), @Middle() oder @Right() auseinander klamüsern und einzeln prüfen.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln