![]() |
Reguläre Ausdrücke...wie?
Hi
ich versuch mich grad mit regulären ausdrücken...hab gesucht, aber nicht wirklich was brauchbares gefunden :( mir schwebt sowas in der art vor: Ausgangsstring: Hallo - Du - Bla-Wuppdi.abc Maske1: %titel% - %wort% - %test%-%name%.%endung% Maske2: %name% - %test% - %titel% - %wort%.%endung% Ausgabestring: Wuppdi - Bla - Hallo - Du.abc ich hoffe es wird klar was ich will... dazu hätte ich 2 fragen: sind das überhaupt reguläre ausdrücke? wie kann man sowas halbwegs einfach realisieren? |
Re: Reguläre Ausdrücke...wie?
Ich würde in dem Fall auf das
![]() |
Re: Reguläre Ausdrücke...wie?
das sieht sehr gut aus!!!
ich habe folgendes beispiel gefunden:
Delphi-Quellcode:
jedoch auch mithilfe
function ParsePhone (const AInputString, ATemplate : string) : string;
const IntPhoneRE = '(\+\d *)?(\(\d+\) *)?\d+(-\d*)*'; var r : TRegExpr; begin r := TRegExpr.Create; try r.Expression := IntPhoneRE; if r.Exec (AInputString) then Result := r.Substitute (ATemplate) else Result := ''; finally r.Free; end; end; begin ParsePhone ('Phone of AlkorSoft (project PayCash) is +7(812) 329-44-69', 'Zone code $1, city code $2. Whole phone number is $&.'); // Rückgabe: 'Zone code +7, city code (812) . Whole phone number is +7(812) 329-44-69.' end. ![]() was ich möchte is einfach nur folgendes: $1 + string + $2 + string umsortieren im prinzip...also zb in string + $2 + $1 + string wie geht das? |
Re: Reguläre Ausdrücke...wie?
Zitat:
Evtl. irgend so was. :wink: Edit: Du könntest es natürlich auch noch auf Wortgrenzen etc. erweitern, aber da ist immer die Frage, ob das für den aktuellen Fall Sinn macht. :wink: Edit2: Fehler korrigiert. :roll: |
Re: Reguläre Ausdrücke...wie?
der punkt muß noch maskiert werden.
also, statt . sollte \. verwendet werden. |
Re: Reguläre Ausdrücke...wie?
Zitat:
|
Re: Reguläre Ausdrücke...wie?
und wie muss das Template aussehen damit das richtig eingesetzt wird?
|
Re: Reguläre Ausdrücke...wie?
Zitat:
Code:
$4 - $3 - $1 - $2.$5
|
Re: Reguläre Ausdrücke...wie?
ich hab mal versucht folgendes zu basteln:
ein user gibt ja lieber %%Titel%% und %%Album%% statt (\w+) und $1 ein...daher möchte ich "userfreundlich" in "programmfeundlich" konvertieren dazu hab ich folgenden code...und der sollte funzen!!! Edt_Simple_InMask ist ein string wie 'ab - %%cd%% - ef' Edt_Simple_OutMask ist ein string wie '%%cd%% - ab - ef' wobei die "variablen" dadrin gleich sein müssen... Edt_Template enthält nachher das Template Edt_Struktur enthält nachher die "suchformel" oder wie immer man das nennen soll... ich muss noch "spezialvariablen" einbauen (zb. für dateiendung...)
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var Vars: TStringList; InMask, OutMask, AktVar: String; NextPos: Integer; begin InMask:=Edt_Simple_InMask.Text; OutMask:=Edt_Simple_OutMask.Text; Vars:=TStringList.Create; while Pos('%%',InMask)>0 do begin NextPos:=Pos('%%',InMask); Vars.Add(copy(InMask,NextPos+2,PosEx('%%',InMask,NextPos+2)-NextPos-2)); Delete(InMask,NextPos,PosEx('%%',InMask,NextPos+2)+2-NextPos); Insert('(\w+)',InMask, NextPos); end; Edt_Struktur.Text:='^'+InMask+'$'; while Pos('%%',OutMask)>0 do begin NextPos:=Pos('%%',OutMask); AktVar:=copy(OutMask,NextPos+2,PosEx('%%',OutMask,NextPos+2)-NextPos-2); Delete(OutMask,NextPos,PosEx('%%',OutMask,NextPos+2)+2-NextPos); Insert('$'+IntToStr(Vars.IndexOf(AktVar)+1),OutMask, NextPos); end; Edt_Template.Text:=OutMask; Vars.Free; end; |
Re: Reguläre Ausdrücke...wie?
was heisst es wenn Exec False zurückibt?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 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