Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: habemehl am 19.12.16 - 10:55:16

Titel: @Matches oder RegEx in Notes Formelsprache
Beitrag von: habemehl am 19.12.16 - 10:55:16
Moin, Moin zusammen,

ich versuche folgende Zeile möglichst gut mit RegEx zu beschreiben.

Code
[Karl-Heinz Mustermann] Kalkül #YKBL557397530OE

Folgender Ausdruck hat mich bisher zum Erfolg geholfen:

Code
[+{!0-9}]*#*

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"))

Folgende Ideen führen leider immer zu einem negativen Ergebnis ("Falsch")
Wie bekomme ich für die ID ein Pattern "Nur Großbuchstaben oder Ziffern" hin, +{A-Z0-9} klappt nicht?

 :-:

Meine "Wissenquelle (http://"https://www.ibm.com/support/knowledgecenter/SSVRGU_9.0.1/com.ibm.designer.domino.main.doc/H_MATCHES.html")"

Vielen Dank und beste Grüße

Titel: Re: @Matches oder RegEx in Notes Formelsprache
Beitrag von: Driri am 19.12.16 - 12:26:33
Für die ID müßte folgender Ausdruck funktionieren:

\#([A-Z0-9])+
Titel: Re: @Matches oder RegEx in Notes Formelsprache
Beitrag von: habemehl am 19.12.16 - 15:52:59
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"))


PPS: Um den letzten Stern zu eleminieren wäre noch "Nur ein Wort" (analog \b) als Pattern nett, habe ich aber auch nicht gefunden.
Titel: Re: @Matches oder RegEx in Notes Formelsprache
Beitrag von: Driri am 20.12.16 - 07:58:13
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.
Titel: Re: @Matches oder RegEx in Notes Formelsprache
Beitrag von: Flachmann am 20.12.16 - 08:07:06
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.
Titel: Re: @Matches oder RegEx in Notes Formelsprache
Beitrag von: habemehl am 27.12.16 - 13:32:32
Moin, Moin,

danke für den Denkanstoß mit den Teilstrings.
Dennoch habe ich mich jetzt erstmal mit  "[+{!0-9}]*#+{A-Z0-9}" begnügt.