AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi TRegExpr

Ein Thema von Jim Carrey · begonnen am 22. Okt 2016 · letzter Beitrag vom 22. Okt 2016
Antwort Antwort
Jim Carrey
(Gast)

n/a Beiträge
 
#1

Delphi TRegExpr

  Alt 22. Okt 2016, 13:04
Ich tue mich gerade ein bisschen schwer mit diesem Neuland namens RegExpr.

Ich benutze eine simple String-Funktion, um die Vorkommen eines Strings TeilString in einem String S zu zählen.
Ich möchte das gerne auf RegEx umstellen, sodass ich auch Wildcards im TeilString benutzen darf.

Nur wie?

Delphi-Quellcode:
RegExpr := TRegExpr.Create;
try
 RegExpr.ModifierG := False;
 RegExpr.Expression := '<!-- DIESEN * MÖCHTE ICH FINDEN -->'; // * könnte alles sein, daher ist Pos() keine Lösung
 // un nu?
finally
 RegExpr.Free;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi TRegExpr

  Alt 22. Okt 2016, 13:14
Ähhhhh, nimm einen HTML-Parser und schon ist alles Richtig.

Und ich glaube du hast RegEx noch nicht ganz verstanden.
"*" ist kein Platzhalter, wie z.B. ? und * bei der Dateisuche.
Das ist ein Multiolikator, der auf das Zeichen davor angewendet wird, also suchst du nach 0 oder mehreren Leerzeichen.

Zitat:
// un nu?
Man mag es nicht glauben, aber das wird in jedem TRegExpr-Turorial gezeigt und davon kennen die SuFu und Google massenaft.
Sogar die OH zeigt wie es geht, bzw. sie verlinkt auf die entsprechende Demo.


Und doch, auch Pos/PosEx wäre eine Lösung, denn man kann ja das davor und das danach suchen und dann das dazwischen rauskopieren.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Okt 2016 um 13:17 Uhr)
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#3

AW: Delphi TRegExpr

  Alt 22. Okt 2016, 13:16
Ginge das hier auch oder ist das Quatsch?
TRegEx.Matches(sMeinString, '<!-- DIESEN (.*) MÖCHTE ICH FINDEN -->').Count
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#4

AW: Delphi TRegExpr

  Alt 22. Okt 2016, 13:29
Ginge das hier auch oder ist das Quatsch?
Mal sehn was Delphi-Referenz durchsuchenTMatchCollection.Count sagt ... joar?

ABER, denk dir eine ( ) um Alles drumrum und wenn es was trifft, dann hast du somit je ZWEI Matches pro Match, da 2 (...) ,
aber im Notfall einfach ausprobieren.
docwiki.embarcadero.com/RADStudio/Seattle/en/Regular_Expressions
docwiki.embarcadero.com/CodeExamples/Seattle/en/RTL.RegExpressionVCL_Sample
docwiki.embarcadero.com/Libraries/Seattle/en/System.RegularExpressions.TRegEx.Matches <- "Returns all the matches present in the input string"
docwiki.embarcadero.com/Libraries/Seattle/en/System.RegularExpressions.TMatchCollection
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Okt 2016 um 13:44 Uhr)
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#5

AW: Delphi TRegExpr

  Alt 22. Okt 2016, 13:30
Danke für die Literatur. Somit verwende ich jetzt Matches statt Match, da ich das besser in meiner Schleife gebrauchen kann.
Jetzt muss ich nur noch finden, wie man die einzelnen Funde ausließt.
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#6

AW: Delphi TRegExpr

  Alt 22. Okt 2016, 15:26
Ok ich habe jetzt alles hinbekommen.
Nur ist RegEx hier ein bisschen... sehr lahmarschig wie ich finde. Bei einer 5 MB großen Datei dauern 2 TRegEx.Matches-Ausführungen mit jeweils 2x (.*) (also 4 insgesamt) im Pattern insgesamt 24 Sekunden - vorher mit einer sehr umständlichen pos/posex-Konstruktion 5 Sekunden.

Geändert von Jim Carrey (22. Okt 2016 um 15:34 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz