AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Suchen & ersetzen mit RegEx - wie Platzhalterwort definieren?
Thema durchsuchen
Ansicht
Themen-Optionen

Suchen & ersetzen mit RegEx - wie Platzhalterwort definieren?

Ein Thema von TiGü · begonnen am 26. Okt 2015 · letzter Beitrag vom 27. Okt 2015
Antwort Antwort
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#1

Suchen & ersetzen mit RegEx - wie Platzhalterwort definieren?

  Alt 26. Okt 2015, 14:23
Hallo zusammen,

ich stell mich zu dumm an für RegEx.
Ich versuche mit Delphi 2007 Codeabschnitte zu ersetzen und kriege es nicht hin.

Bspw. soll aus
Delphi-Quellcode:
var
  S : string;
begin
    S := S
      + GF + MT('TeFreezNrGes') + GF + TZ
      + GF + MT('TeFreezNrTeil') + GF + TZ
      + GF + MT('TeZeitVonS') + ' [s]' + GF + TZ;
folgendes werden:
Delphi-Quellcode:
var
  S : string;
begin
    S := S
      + FooBar(MT('TeFreezNrGes'))
      + FooBar(MT('TeFreezNrTeil'))
      + FooBar(MT('TeZeitVonS'));
Wie lautet der korrekte RegEx-Ausdruck, um ' GF + BELIEBIGERAUSDRUCK + GF + TZ' zu ersetzen?
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Suchen & ersetzen mit RegEx - wie Platzhalterwort definieren?

  Alt 27. Okt 2015, 09:27
Hey,

ich habe sowas ähnliches letztlich mit Delphi auch versucht, dann aber zu NotePad++ gegriffen.

Dort kannst du in Dateien suche und ersetzten und dabei auch Reguläre Ausdrücke verwenden (mWn kann selbst das aktuelle Sealte dies nicht). Auch kannst du es auf Ordner begrenzen und einen Dateiformat Filter verwenden. z.B. *.pas.

Ich habe meine Projekte immer in einem Verwaltungssystem, also wenn eine Ersetzung mal "Mist" macht, kann man dies fix wieder korrigieren.

Hier als kleine Hilfe zu den Ausdrücken:
https://regex101.com/r/fL2pR1/1

Liebe Grüße
Sebastian
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Suchen & ersetzen mit RegEx - wie Platzhalterwort definieren?

  Alt 27. Okt 2015, 09:46
Hm, wenn ich den verlinkten RegEx-Ausdruck in Notepad++ mit den obigen Beispiel ausprobiere, natürlich mit aktivierten 'Reguläre Ausdrucke', dann ersetzt er mir die ganze Zeile mit FooBar(), aber ich hätte halt irgendwie gerne den inneren Teil (MT('TeFreezNrGes')) mit drin: FooBar(MT('TeFreezNrGes')).

Geht das überhaupt mit regulären Ausdrucken?
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Suchen & ersetzen mit RegEx - wie Platzhalterwort definieren?

  Alt 27. Okt 2015, 10:08
Probier's mal mit
Code:
\s*GF\s*[+]\s*(.+\S)\s*[+]\s*GF\s*[+]\s*TZ
als regulären Ausdruck (ungreedy laufen lassen).
Klappt zumindest im UltraEdit ganz gut, wenn ich nach dem Ausdruck suche und durch ' Foobar($1) ' ersetzen lassen.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Suchen & ersetzen mit RegEx - wie Platzhalterwort definieren?

  Alt 27. Okt 2015, 11:08
Hm, in Notepad++ ersetzt er nur eine Zeile von drei...bin ich zu dumm?
Siehe Bild-Anhang:
Miniaturansicht angehängter Grafiken
notepad-.png  
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Suchen & ersetzen mit RegEx - wie Platzhalterwort definieren?

  Alt 27. Okt 2015, 12:33
Ich denke, daß Notepad++ hier nicht global arbeitet.

Du kannst es mal über diverse Online-Tools testen: z.B. https://regex101.com. Hier mußt Du die Option 'g' noch setzen, sonst wird nur der erste Treffer gefunden.

Aber Du willst es ja mit Delphi2007 machen: welche RegEx Bibliothek verwendest Du denn da?
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Suchen & ersetzen mit RegEx - wie Platzhalterwort definieren?

  Alt 27. Okt 2015, 13:12
Ne, der Notepad++ ersetzt eigentlich mit Klick auf "Alle ersetzen" in der Regel alle Fundstellen.

Auch regex101.com kommt mit deinen letzten Vorschlag nicht zurecht (trotz g), siehe:
https://regex101.com/r/lM2mY9/1

Ich möchte es nicht unbedingt mit der alten IDE machen, ich kann mir auch andere (kostenlose) Texteditoren vorstellen.
Ich kam halt nur drauf, weil es im Suchen & Ersetzen Dialog ja den Haken für "Regular expressions" gibt.

Nochmal, ich möchte nicht zur Laufzeit mit einen Programm irgendwelche Strings auseinander nehmen, sondern alte Quelltexte vereinfachen, weil diese String-Konkatenation sehr sehr häufig vorkommt.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Suchen & ersetzen mit RegEx - wie Platzhalterwort definieren?

  Alt 27. Okt 2015, 14:09
Mit Notepad++

Suche nach: \s*GF\s*[+]\s*(.+\S)\s*[+]\s*GF\s*[+]\s*TZ
Ersetzen mit: Foobar\($1\)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Suchen & ersetzen mit RegEx - wie Platzhalterwort definieren?

  Alt 27. Okt 2015, 14:47
Stevie ist mein Held!
Das funktioniert tadelos.
Ruckzuck sind 159 Vorkommen ersetzt.
Vielen vielen Dank!
  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 08:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz