-
Trim, SubString etc.: reguläre Ausdrücke für Zeichenoperationen nutzen
Vor kurzem hatte ich ein Problem bei einem Nintex Workflow. Es ging darum, einen Text aus einer Variable von Leerzeichen vor dem Text und danach zu befreien (TRIM).
Dafür ist der „Build dynamic string“ nicht gedacht. Hier können Texte dynamisch aus Variablen und/oder statischen Texten zusammengesetzt werden.
Was nun?
Hier kann natürlich die Aktivität „Regular Expression“ helfen. Die Lösung ich recht einfach, wenn man sich bereits mit regulären Ausdrücken auskennt.
^(?:\s*)([\W\w]*)(?:\b\s*$)
Für das Bauen von regulären Ausdrücken verwende ich sehr gerne das Tool RegExBuddy. Das Tool erzeugt auch automatisch eine Erklärung für den Ausdruck (siehe unten [1]).Was uns jetzt interessiert, ist die erste s.g. Backreference (Durch (?:xxx) können Ausdrücke zu einer Gruppe zusammengefasst werden ohne in der Backreference-Liste aufzutauchen). Das können wir leider nicht so in der Nintex Aktivität angeben. Was uns hier hilft, ist Split Operation. Diese nutzt die Backreference, um den Text zu zerstückeln.
Wieso hilft uns hier die Extract Operation nicht? Diese findet den gesamten Match und nicht nur die Backreference :- ( Damit ist die Extract Operationan dieser Stelle nutzlos.Fazit: Wie konfiguriert man die Aktivität?
(1) Zuerst den Typ „Split“ festlegen, sonst werden alle Felder gelöscht! Die Einstellung ist leider nicht als erste da. Nicht besonders logisch

(2) Pattern: ^(?:\s*)([\W\w]*)(?:\b\s*$)
(3) Input Text: eine String Workflow Variable auswählen
(4) Die Ergebnisse werden in einer Collection abgelegt. Diese muss man vorher als eine Workflow Variable hinzufügenEs kann sein, das wir keinen Treffer haben, dann ist unsere Collection leer (Input-Variable war leer). Das würde eine RunTime-Exception hervorrufen. Deswegen brauchen wir noch zusätzliche
Aktivitäten:
(1) Collection Operation – die Anzahl der Elemente in der Collection wird ausgelesen und in einer Workflow-Variable vom Typ Number countCollection abgelegt.
(2) Run If – wenn countCollection größer als 0 ist, dann können wir den Text auslesen.
(3) Set Variable – wir setzen den Index für die Get-Operation auf 1. Split-Operation liefert 3 Elemente: vor der Backreference, die Backreference, alles nach der Backreference.
(4) Collection operation – die Variable mit dem Text nach dem Trim auslesen. Es ist das zweite Element in der Collection. Der Index beginnt bei 0. Deswegen haben wir in (3) den Index auf 1 gesetzt.Das Ganze sollte man dann in eine Action Box verpacken.
Nach demselben Muster können folgende Operationen ausgeführt werden:trim: ^(?:\s*)([\W\w]*)(?:\b\s*$) - rechts und links Leerzeichen abschneiden
rtrim: ^([\W\w]*)(?:\b\s*$) - nur rechts Leerzeichen abschneiden
ltrim: ^(?:\s*)([\W\w]*) – nur links Leerzeichen abschneiden
substr :position, length : ^(?:[\W\w]{x})([\W\w]{y}) – einen Substring ausschneiden, ab der Position x und mit der Länge yAndere Operationen:
concat – Textzeichen zusammensetzen: dafür ist Build dynamic String prädestiniert
replace – Reguar Expression replace und für den Treffer $1 etc. nutzen
Leider ist es nicht möglich mit RegEx und Nintex folgende Operationen durchzuführen. Vielleicht aber doch? Ideen?
upper: ^([\W\w]*) \U1 -> Spirit Link Technology – SPIRIT LINK TECHNOLOGY
lower ^([\W\w]*) \L -> Spirit Link Technology – spirit link technology
initcap (\w)(\w+) \F1$2 -> spirit link technology - Spirit Link Technology
rpad DOG-*-*-*, beginning, ending, padding
lpad *-*-*DOGMit der Match-Operation, die ein Yes/No zurückliefert, können Beispielweise folgende Werte validiert werden (hier kann auch „Set a Condition“ oder „Run If“ benutzt werden, dass ebenfalls reguläre Ausdrücke unterstützt):
- Nur Buchstaben
- Nur Zahlen
- Alphanumerisch
- gültige IP Adresse
- gültige eMail Adresse
- etc.Viel Spaß damit! Weitere Ideen?
TIPP 1:
Dem regulären Ausdruck können auch Parameter als „inline parameter“ übergeben werden.
Um z.B. in einem Text wie „Spirit Link Technology“ nach dem Wort „Link“ zu suchen, könnten wir die Match-Operation benutzen:
Pattern: link
Allerdings wird hier case-senstive gesucht und wir bekommen keinen Treffer. Mit den „inline parameter“ i können wir das Verhalten ändern
Pattern: (?i)link
Mehr zum Thema RegEx und Parameter:
http://msdn.microsoft.com/en-us/library/yd1hzczs.aspxTIPP 2:
Benutzen Sie als String Unicode, so müssen andere Operatoren für die regulären Ausdrücke benutzt werden. Es gilt nicht bei UTF 8 für die englische und deutsche Sprache.
\p{name}
Matches any character in the Unicode general category or named block specified by name (for example, Ll, Nd, Z, IsGreek, and IsBoxDrawing).
http://msdn.microsoft.com/en-us/library/20bw873z.aspxErklärung:
[1] Trim RegExp ^(?:\s*)([\W\w]*)(?:\b\s*$)
Assert position at the start of the string «^»
Match the regular expression below «(?:\s*)»
Match a character that is a “whitespace character” (spaces, tabs, line breaks, etc.) «\s*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Match the regular expression below and capture its match into backreference number 1 «([\W\w]*)»
Match a single character out of the list: non-word character, or a word character «[\W\w]*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Match the regular expression below «(?:\b\s*$)»
Assert position at a word boundary «\b»
Match a character that is a “whitespace character” (spaces, tabs, line breaks, etc.) «\s*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Assert position at the end of the string (or before the line break at the end of the string, if any) «$»
Keine Kommentare
-
Suche
-
Tag Cloud
- 2010
- action item
- Autorentool
- Backreference
- Business Intelligence
- CMS
- Collaboration
- Consulting
- Content Management
- CRM
- Development
- Dokumentenmanagement
- Dynamics
- E-Learning
- Enterprise 2.0
- Entwicklung
- Evaluation
- Eventhandler
- FAST
- Filterung
- Impuls
- ISPA SharePoint User Gruppe
- Key Performance Indicators
- Knowledgemanagement
- Learning Management System
- Liste
- LMS
- Metadaten
- Migration
- MOSS 2007
- Nintex
- Nintex Workflow 2007
- Opentext Livelink
- Partner Konferenz
- Projektmanagement
- Rechnungsmanagement
- Rechte
- regexp
- schulung
- Scorm
- Search
- SharePoint
- Social Community
- Software Ring
- Start Up
- Suche
- Teamraum
- training
- trim
- Veranstaltung
- Verknüpfung
- Vortrag
- whitespace
- Windows Workflow Foundation
- Workflow
- Workshop
- WSS 2.0
- WSS 3.0
-
Jobs
-
Partner
-
Externe Links
-
Spirit Links
-
Autoren
-
Abonnieren


