Domino 9 und frühere Versionen > ND9: Entwicklung

Alternative zu VBScript Regexp?

<< < (2/3) > >>

schroederk:
Ich bin schonmal etwas weitergekommen und kann herausfinden, ob überhaupt ein Platzhalter gefunden wurde und könnte alle Platzhalter auf einen Schlag ersetzen.


--- Code: --- Set j = New Javasession
Set c = j.GetClass("java.util.regex.Pattern")
Set jpattern = c.compile(pattern)
Set matcher = jpattern.matcher(body)
b = matcher.matches()
If b = True Then
Set body = matcher.replaceAll("%test%")
End If

--- Ende Code ---

Aber ich benötige eine Liste aller gefundenen Platzhalter, die dem Reg-Ausdruck entsprechen.
Für eine reine Java-Umgebung habe ich ein Beispiel gefunden, aber ich weiß nicht, wie ich das in Lotusscript umgesetzt bekomme:


--- Code: ---Pattern p = Pattern.compile(regexPattern);
matches<String> list = new ArrayList<String>();
Matcher m = pattern.matches(input);
while (m.find()) {
    matches.add(m.group());
}

--- Ende Code ---

Ich müsste die Liste so erhalten, dass ich anschließend mit Lotusscript so weitermachen kann:


--- Code: ---ForAll m In matches
--- Ende Code ---


Tode:
Bin leider gerade erst über diesen Thread gestolpert. Ich hatte sowas mal mittels VBScript- Objekt gelöst, hier mal Beispielcode:
--- Code: --- Dim strVorlagentext As String
Dim pattern As String

Dim regex As Variant

Dim match As Variant
Dim matches As Variant

strVorlagentext = "Dies ist ein Test. Erster Platzhalter %Test123% Fertig %UndNochEiner%."

pattern = |%(\w+)%|
Set regex = CreateObject("VBScript.Regexp")
regex.Global = True
regex.IgnoreCase = True
regex.Pattern = pattern

Set matches = regex.Execute(strVorlagentext)
If matches.Count >0  Then
ForAll strMatch In matches
MessageBox strMatch.Value
End ForAll
MessageBox ("Gefunden!")
Else
MessageBox ("nicht gefunden")
End If
--- Ende Code ---

Damit sparst Du Dir den Java- Umweg, und Du hattest ja explizit nach VBScript Regexp gefragt...

schroederk:
Sorry, Torsten, ich hatte explizit nach einer Alternative zu VBScript gefragt, damit es auch auf Mac-Rechnern läuft  ;)

Tode:
Überlesen... sorry!

schroederk:
Ich denke, ich habe es hinbekommen. Muss noch eingebaut und durchgetestet werden, aber sieht schonmal vielversprechend aus:


--- Code: --- Set j = New Javasession
Set c = j.GetClass("java.util.regex.Pattern")
Set jpattern = c.compile(pattern)
Set matcher = jpattern.matcher(body)
i = 0
While matcher.find()
i = i + 1
Print " *** gefunden wurde: " & matcher.group(1)
Wend

--- Ende Code ---

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln