Autor Thema: benötige Hilfe bei einfacher Regexp-Suche  (Gelesen 2622 mal)

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
benötige Hilfe bei einfacher Regexp-Suche
« am: 07.07.14 - 07:16:25 »
Hallo,

ich kenne zwar Reguläre Ausdrücke aus anderen Sprachen, aber ich komme beim VBScript-Teil im Lotusscript nicht weiter.
Offenbar fehlt dem Suchpattern noch irgendetwas bzw. ist noch falsch.

Gesucht werden soll (später) alle Wörter, die durch % begrenzt sind.
Laut http://regex101.com/r/iT0uZ3/1 funktioniert der Suchpattern, aber nicht hier.
Mit anderen Suchpatterns wie z.B. pattern = |test| funktioniert es.
Hat da jemand einen Tip?

Zitat
   strVorlagentext = "Dies ist ein Test. Funktioniert leider zu 0%. %Test123% Fertig."
   
   pattern = |%(\w+)%|
   Set regex = CreateObject("VBScript.Regexp")
   regex.Global = True
   regex.IgnoreCase = True
   regex.Pattern = pattern
   
   match = regex.Test(strVorlagentext)
   If match = True Then
      Messagebox ("Gefunden!")
   Else
      Messagebox ("nicht gefunden")
   End If
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: benötige Hilfe bei einfacher Regexp-Suche
« Antwort #1 am: 07.07.14 - 08:10:19 »
Seltsam: Ich habe Deinen Code hier in einen Agenten kopiert, und da kommt "gefunden"...
Und hiermit komme ich sogar an die einzelnen Matches ran:
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. Funktioniert leider zu 0%. %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 objMatch In matches
			MessageBox objMatch.Value
		End ForAll
		MessageBox ("Gefunden!")
	Else 
		MessageBox ("nicht gefunden")
	End If
« Letzte Änderung: 07.07.14 - 08:14:47 von Tode »
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: benötige Hilfe bei einfacher Regexp-Suche
« Antwort #2 am: 07.07.14 - 08:16:11 »
Wenn ich Dir sage, dass ich jetzt seit 2 Tagen auf den Code schaue und den Fehler nicht gefunden habe.
Eine einfache Messgebox hätte das Problem gezeigt. Ich hatte für den strVorlagentext den Inhalt eines Feldes nehmen wollen (strVorlagentext = uidoc.FieldGetText("Vorlagentext") aber das falsche Feld angegeben. Dadurch wurde 'test' gefunden, aber nicht '%test%'.

Ich schäme mich...  :-[

Hätte ich doch eher gepostet, dann wäre der Wald vor meinen Augen schon viel früher abgeholzt worden.

Lieben Dank für die Hilfe.
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: benötige Hilfe bei einfacher Regexp-Suche
« Antwort #3 am: 07.07.14 - 08:16:43 »
Rubber duck debugging... Hilft (fast) immer
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline schroederk

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.924
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: benötige Hilfe bei einfacher Regexp-Suche
« Antwort #4 am: 07.07.14 - 08:43:24 »
Das problem ist so oft, dass man bestimmte Dinge einfach nicht in Frage stellt.
Bei Problemlösungen, die solange auf sich warten lassen, muss ich mir einfach mal angewöhnen, alles in Frage zu stellen.
Da ich mich mit regulären Ausdrücken öfters mal etwas schwer tue, habe ich das Problem einzig hier vermutet. Grober Fehler.
Ich wäre ja gerne weniger egoistisch, aber was hab ich davon?

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: benötige Hilfe bei einfacher Regexp-Suche
« Antwort #5 am: 07.07.14 - 09:09:02 »
Ja, das kenne ich... Was ich aber tue, wenn ich ein Beispiel für einen Post vorbereite, dann packe ich das in eine kleine Test- Datenbank, um

a) Sicherzustellen, dass das Problem auch in einer "einfacheren Umgebung" nachzustellen ist, und nicht "aus den Umständen" resultiert
b) zu verhindern, dass Kommentare kommen wie "Das kann ja nicht gehen, Du hast ja Variable A nicht deklariert", oder "In Zeile 5 muss es aber strTest heissen, nicht stTest).

Da hättest Du dann selbst gemerkt: Komisch, der Beispielcode funktioniert... ;)
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz