Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: schroederk am 01.07.15 - 09:45:22

Titel: Alternative zu VBScript Regexp?
Beitrag von: schroederk am 01.07.15 - 09:45:22
Hallo,

ich muss ein Script umschreiben, damit dieses auch auf MAC-Rechnern läuft.
Durch die bisherige Verwendung von VBScript zum Suchen von Platzhaltern in einem Text ist dies nicht möglich.

Das VBScript-Regexp wird verwendet um alle in einem Text gefundenen Platzhalter in einem Array zu speichern und diese dann mittels FindAndReplace zu ersetzen.
Es gibt zwar die Funktion "Like" aber damit weiß ich nur, dass ein Platzhalter gefunden wurde, aber nicht welcher?

Kennt jemand eine funktionierende Alternative?
Titel: Re: Alternative zu VBScript Regexp?
Beitrag von: umi am 01.07.15 - 09:46:35
Den Regex Teil kannst Du in Java auslagern und dann mit LS2J ansprechen
Titel: Re: Alternative zu VBScript Regexp?
Beitrag von: schroederk am 01.07.15 - 09:58:34
Puh, mit Java hab ich noch nie was gemacht und LS2J ist Neuland für mich.
Hast Du da vielleicht ein Beispiel? Für's Suchen und Ersetzen finde ich lediglich die VBScript-Beispiele  :-[
Titel: Re: Alternative zu VBScript Regexp?
Beitrag von: umi am 01.07.15 - 13:13:29
siehe
http://www.openntf.org/main.nsf/project.xsp?r=project/Regular%20Expressions%20for%20LotusScript (http://www.openntf.org/main.nsf/project.xsp?r=project/Regular%20Expressions%20for%20LotusScript)
http://hnagasim.blogspot.ch/2010/03/ls2j-match-string-with-regular.html (http://hnagasim.blogspot.ch/2010/03/ls2j-match-string-with-regular.html)
http://hnagasim.blogspot.ch/2010/04/ls2j-replace-string-by-using-regular.html (http://hnagasim.blogspot.ch/2010/04/ls2j-replace-string-by-using-regular.html)
und
http://atnotes.de/index.php?topic=58536.0 (http://atnotes.de/index.php?topic=58536.0)
Titel: Re: Alternative zu VBScript Regexp?
Beitrag von: schroederk am 01.07.15 - 14:21:46
Danke, damit habe ich erstmal Lesestoff.  ;D
Titel: Re: Alternative zu VBScript Regexp?
Beitrag von: schroederk am 02.07.15 - 13:48:49
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

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());
}

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

Code
ForAll m In matches


Titel: Re: Alternative zu VBScript Regexp?
Beitrag von: Tode am 02.07.15 - 14:01:41
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

Damit sparst Du Dir den Java- Umweg, und Du hattest ja explizit nach VBScript Regexp gefragt...
Titel: Re: Alternative zu VBScript Regexp?
Beitrag von: schroederk am 02.07.15 - 14:04:37
Sorry, Torsten, ich hatte explizit nach einer Alternative zu VBScript gefragt, damit es auch auf Mac-Rechnern läuft  ;)
Titel: Re: Alternative zu VBScript Regexp?
Beitrag von: Tode am 02.07.15 - 14:11:08
Überlesen... sorry!
Titel: Re: Alternative zu VBScript Regexp?
Beitrag von: schroederk am 02.07.15 - 16:58:53
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
Titel: Re: Alternative zu VBScript Regexp?
Beitrag von: ERR am 05.08.15 - 15:18:02
Hallo schroederk,

hier ist die Java-Lösung mit Lotusscript-Wrapper zu finden:

http://www.openntf.org/projects/pmt.nsf/1af5f59bae92986c85256bae000f898c/02b49e9c66b9cd63862577ad00483a95?OpenDocument (http://www.openntf.org/projects/pmt.nsf/1af5f59bae92986c85256bae000f898c/02b49e9c66b9cd63862577ad00483a95?OpenDocument)

MFG
ERR