| Autor |
Beitrag |
sacharja
      
Beiträge: 24
|
Verfasst: Sa 04.02.06 14:19
Hallo,
wie kann ich einen RegEx Ausdruck auf einen String anwenden und das Gefundene in eine Variable speichern?
Ich hab schon in der Delphi Hilfe geschaut, aber da steht überhaupt nichts drin. Habt ihr vielleicht eine Delphi Objektreferenz, wo alle Befehle/Eigenschaften aufgelistet sind? So etwas wie SelfHtml (damit ich nicht immer nachfragen muss  )
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Sa 04.02.06 17:41
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
sacharja 
      
Beiträge: 24
|
Verfasst: So 05.02.06 10:44
In den 2 Threads die man dann findet steht genau 1 Information, nämlich dass die Funktion TREGEXP heißt
Gibt es keine bekannte Objektreferenz? Vielleicht könnte einmal jemand ein Beispiel machen, wie man aus einem String "blablaxxxxxxxblabla" das "xxxxxxx" extrahiert und weiterverwendet.
Wäre super.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 05.02.06 11:03
Nope, da muss ich Dir leider sagen, hast Du falsch gelesen: Die Komponente heißt TRegExp und die beiden Threads erklären deren Nutzung für Search-Patterns. Hättest Du einfach einmal TREGEXP in Google eingegeben, wärst Du ohne Umwege auf die Komponente gestoßen. Ein wenig Eigeninitiative darf man ja bitte erwarten!
MfG,
BenBE.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
sacharja 
      
Beiträge: 24
|
Verfasst: So 05.02.06 11:53
| Zitat: | | Nope, da muss ich Dir leider sagen, hast Du falsch gelesen |
Wieso das denn?
| Zitat: | | die beiden Threads erklären deren Nutzung für Search-Patterns. |
Hast du dir die beiden Thread einmal angeschaut? Im ersten steht über TREGEXP das:
| Zitat: | | es gibt eine komponente namens TRegExp, befrag mal torry oder google. Damit lässt sich sowas sicher überprüfen. |
und im zweiten das:
| Zitat: | | Es gibt eine Komponente Namens TRegExp oder so ähnlich. Mit der kannst du mittels Regulärer Ausdrücke überprüfen, ob die eingegebene Email-Adresse gültig ist. |
So schlau war ich auch schon vorher.
| Zitat: | | Hättest Du einfach einmal TREGEXP in Google eingegeben, wärst Du ohne Umwege auf die Komponente gestoßen. |
Wie geschrieben habe ich bevor ich diesen Post erstellte sowohl in der Delphi Hilfe als auch in Google danach gesucht. Nachdem ich da nach 1h aber nichts Brauchbares gefunden habe, dachte ich jemand hier könnte vielleicht schnell ein Beispiel machen wie man es anwendet, oder wenigstens eine gute Seite nennen, wo die Verwendung drin steht.
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: So 05.02.06 18:24
Du hast die entscheidenen Stellen zitiert, die BenBes Argumentation unterstreichen, nämlich dass es sich nicht um eine Funktion, sondern um eine Klasse/Komponente handelt.
Und zur Suche, ich hab 30sec gebraucht, um mit Hilfe von Google diese Seite zu finden (sogar mit dem R das hinten noch dran steht *g*): regexpstudio.com/TRegExpr/TRegExpr.html
Unter dem Link "Bird's Eye View" auf der Seite finden sich sogar Beispiele, wie man die Komponente anwendet
|
|
sacharja 
      
Beiträge: 24
|
Verfasst: Mo 06.02.06 17:34
Ja, die Seite hatte ich auch schon gefunden. Das Tool ist eine Ansammlung regulärer Ausdrücke. Hier liegt auch glaube ich ein Mißverständnis vor. Reguläre Ausdrücke kann ich ohne Probleme formulieren (mit JS mache ich fast nichts anderes). Das Problem ist nur wie ich meine RegEx in Delphi verarbeite.
Werde mich aber einmal durch die Hilfe des Tools wühlen, vielleicht steht da ja noch etwas drinnen...
JS Code:
Quelltext 1: 2: 3:
| UnprefString = "das soll durchsucht werden"; RegUnprefRul = new RegExp(/(?:[^\"]{5}|(?=javascript:)[^)]+)((?:http|ftp|https|nntp)(?::|%3a)(?:\/|%2f)(?:\/|%2f)[^&)\'\"]+)/,im); if (RegUnprefRul.test(UnprefString) == true){} |
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 06.02.06 17:52
Ich habs jetzt nur mal im Editor angeschaut, aber ich verstehe Dein Problem nicht. Die Klasse, die in dem Paket ist (zur Sicherheit hier nochmal der Download-Link: regexpstudio.com/Downloads/regexpr_DE.zip) sieht sehr danach aus, als ob man damit RegExp anwenden koennte. Und auch die Beispielseite, die dort verlinkt ist (habe ich oben genannt) sieht sehr danach aus, als ob es GENAU das ist, was Du suchst.
Wuerdest Du also bitte bitte mal diese Klasse anschauen .... 
|
|
ghost_assassin
      
Beiträge: 18
|
Verfasst: Mi 08.02.06 12:54
| Zitat: | | wie man aus einem String "blablaxxxxxxxblabla" das "xxxxxxx" extrahiert und weiterverwendet. |
Delphi-Quelltext 1: 2: 3: 4:
| var xstring:string begin xstring:=copy('blablaxxxxxxxblabla',7,7); end; |
wenn du auf bestimmte zeichen ausbist, einfach
schritt für schritt jedes zeichen vom string
überprüfen...
|
|
Grendel
      
Beiträge: 443
Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
|
Verfasst: Mi 08.02.06 13:23
Suchen kannst Du mit TRegExpr folgendermaßen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var RegEx: TRegExpr; begin RegEx := TRegExpr.Create(); RegEx.Expression := '([\w|.]+),?'; RegEx.InputString := '.com, .net, .org'; if RegEx.Exec() then begin repeat ShowMessage(RegEx.Match[0] + ' - ' + RegEx.Match[1]); until not RegEx.ExecNext(); end; RegEx.Free(); end; |
Match[0] ist immmer der komplette gefundene String und Match[1] bis Match[n] die Teile in den Klammern.
Bis neulich ...
|
|
sacharja 
      
Beiträge: 24
|
Verfasst: Fr 10.02.06 14:12
| Zitat: | | Suchen kannst Du mit TRegExpr folgendermaßen: |
| Zitat: | | Match[0] ist immmer der komplette gefundene String und Match[1] bis Match[n] die Teile in den Klammern. |
Super, danke genau das habe ich gesucht. Werde ich gleich einmal ausprobieren.
|
|
|