AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein "RegEx Perl-Compatible" - Bedeutung dessen?
Thema durchsuchen
Ansicht
Themen-Optionen

"RegEx Perl-Compatible" - Bedeutung dessen?

Ein Thema von s-off · begonnen am 22. Sep 2007 · letzter Beitrag vom 22. Sep 2007
Antwort Antwort
s-off
(Gast)

n/a Beiträge
 
#1

"RegEx Perl-Compatible" - Bedeutung dessen?

  Alt 22. Sep 2007, 19:42
Hallo zusammen,

ich beschäftige mich gerade mit regulären Ausdrücken - ein sehr interessantes Thema.

Nun bin ich allerdings auf etwas gestossen, was ich etwas seltsam finde.

Ich habe versucht, einen Ausdruck zu erstellen, der mir in meinem Quellcode sämtliche Strings rausfiltert. Dabei ist folgendes herausgekommen, was auch funktioniert:
(?<=.*\').*(?=\'.*) Ich weiss, dass dieser Ausdruck nicht 100% wasserdicht ist - das ist jetzt aber auch nicht das Thema.

Worum es mir geht, ist folgendes:
Ich habe eine Pas-Datei mit UltraEdit geöffnet, und wollte mit der UltraEdit-Suche meinen Ausdruck testen; das Ergebnis => es wurde kein String gefunden, obwohl definitv welche vorhanden sind.
Das gleiche Phänomen mit dem Suchprogramm FileLocator - dieses meckerte mich sogar noch an, dass mein regulärer Ausdruck fehlerhaft sei.
In RegEx-Testern wie bspw. 'Expresso' funktioniert der Ausdruck hingegen tadellos.

Meine Vermutung geht dahin, dass es an den benutzten Lookarounds liegt, und dass sowohl UltraEdit als auch FileLocater diese nicht unterstützen. Lt. Programmhilfe unterstützen beide Programme aber Perl-kompatible Reguläre Ausdrücke.

Und da frage ich mich - für was steht denn 'Perl-kompatibel'. Ich hätte jetzt gedacht - gut, Perl-kompatible RegEx, also werden wohl auch Lookarounds unterstützt - Fehlanzeige

Edit:
So, ich habe nun mal in den Klammern die '*' weggelassen, so dass das Konstrukt wie folgt aussieht:
(?<=.').*(?='.) Und nun funktioniert der Ausdruck.
Was mich nun aber wundert - warum meckert Expresso nicht?

Edit2: zu früh gefreut - der angepasste Ausdruck funktioniert nur bei FileLocater - nicht aber bei UltraEdit - obwohl beide die gleiche Engine benutzen (Boost.Regex).
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
196 Beiträge
 
Delphi XE Professional
 
#2

Re: "RegEx Perl-Compatible" - Bedeutung dessen?

  Alt 22. Sep 2007, 20:42
Perl-kompatible Regular Expressions sind das, was die Manual Page von Perl zum Thema Regular Expressions beschreibt.

Die Manpage heißt "perlre" und sollte bei jeder Unix/Linux-basierten Perl-Installation dabei sein.

Für die Nicht-Unixler hilft Google weiter: Manpage "perlre".

Um ehrlich zu sein, ich hab Deinen RE auch nicht verstanden. Was ist das für eine Syntax, wo hast Du die her?

Gruß,
SirTwist
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#3

Re: "RegEx Perl-Compatible" - Bedeutung dessen?

  Alt 22. Sep 2007, 20:47
Zitat von SirTwist:
Um ehrlich zu sein, ich hab Deinen RE auch nicht verstanden. Was ist das für eine Syntax, wo hast Du die her?
Öhm, aus diversen Tutorials zum Thema, bspw. hier
Die Lookarounds sind dort exakt so beschrieben, wie ich sie angewendet habe.

(?<=.*\').*(?=\'.*) (?<=.*\') - Lookbehind => findet irgendwelche Zeichen (.) egal wie oft (*) gefolgt von einem ' (\') - das Ganze wird aber nicht in das Ergebnis mit einbezogen

.* - der String an sich

(?=\'.*) - Lookahead => findet ein ' (\') gefolgt von irgendwelchen Zeichen (.) egal wie oft (*) - aber nicht in Ergebnis mit einbeziehen.
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

Re: "RegEx Perl-Compatible" - Bedeutung dessen?

  Alt 22. Sep 2007, 21:03
Beschreibung von Perl-compatiblen Regular Expressions findet man auch in guten php-Manuals, die dürften nämlich identisch sein. Ich bezweifle nur, ob die in Delphi genauso gültig sind? Hab damit noch keine Erfahrung.
Karl-Heinz
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#5

Re: "RegEx Perl-Compatible" - Bedeutung dessen?

  Alt 22. Sep 2007, 21:08
Es geht jetzt ja nicht um Delphi, sondern um reguläre Ausdrücke im Allgemeinen.

Desweiteren steht überall, dass Perl-RegEx Lookarounds unterstützen, bspw. hier
Zitat:
Perl 5 introduced two very powerful constructs: "lookahead" and "lookbehind".
Auf der perlre-Mainpage allerdings, findet sich dazu nichts - sehr verwirrend alles...
Da denkt man, es gäbe einen Standard, aber jeder schreibt was anderes.
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

Re: "RegEx Perl-Compatible" - Bedeutung dessen?

  Alt 22. Sep 2007, 21:16
Schau mal hier: Klick
Karl-Heinz
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#7

Re: "RegEx Perl-Compatible" - Bedeutung dessen?

  Alt 22. Sep 2007, 21:22
Wikipedia kennt auch kein Lookaround
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#8

Re: "RegEx Perl-Compatible" - Bedeutung dessen?

  Alt 22. Sep 2007, 21:26
Zitat von s-off:
Wikipedia kennt auch kein Lookaround
Die Sache ist die: auch bei PerlRe gibts verschiedene Versionen - neuere Versionen können mehr, ältere weniger. Und dann kommt es eben ganz darauf an, ob deine Delphi-Komponente (bzw das Programm) auf der neuesten Version basiert

  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#9

Re: "RegEx Perl-Compatible" - Bedeutung dessen?

  Alt 22. Sep 2007, 21:55
Okidoki, ich nehme das jetzt einfach mal so hin )

Danke Euch allen!
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
196 Beiträge
 
Delphi XE Professional
 
#10

Re: "RegEx Perl-Compatible" - Bedeutung dessen?

  Alt 22. Sep 2007, 22:45
Zitat von s-off:
Auf der perlre-Mainpage allerdings, findet sich dazu nichts
Doch, Look-Ahead und Look-Behind werden in der Manpage erwähnt, aber das Kapitel beginnt mit:
Zitat:
The stability of these extensions varies widely. Some have been part of the core language for many years. Others are experimental and may change without warning or be completely removed. Check the documentation on an individual feature to verify its current status.
Ich gebe zu, ich hatte bislang nichts davon gewusst.
  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 05:41 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