AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein regulärer Ausdruck: Anführungszeichen finden
Thema durchsuchen
Ansicht
Themen-Optionen

regulärer Ausdruck: Anführungszeichen finden

Offene Frage von "stz"
Ein Thema von stz · begonnen am 5. Jul 2006 · letzter Beitrag vom 6. Jul 2006
Antwort Antwort
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#1

regulärer Ausdruck: Anführungszeichen finden

  Alt 5. Jul 2006, 15:48
Moin,
ich bin auf der Suche nach einem regulären Ausdruck, der Anführungszeichen findet, aber mit \ escapte Anführungszeichen auslässt. Ich habe mir das so gebastelt:
Code:
[^\\]("|')|^("|')
habe aber nun das Problem, dass ich - wenn das Anführungszeichen nicht am Zeilenanfang steht - ich nicht nur das Anführungszeichen, sondern auch das Zeichen davor bekomme. Ich möchte aber wirklich nur das Anführungszeichen erhalten. Wer kann mir da helfen?

Gruß
Malte

PS: Das ganze brauche ich für einen TSynMultiSyn aus dem Synedit-Projekt.
Malte Schmitz
Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.

Entwickler des HTML-Editors MEdit (DP)
  Mit Zitat antworten Zitat
Waldteufel
(Gast)

n/a Beiträge
 
#2

Re: regulärer Ausdruck: Anführungszeichen finden

  Alt 5. Jul 2006, 15:57
Hi Stz.

Da gibts was, das nennt sich Lookahead...

Code:
[b][size=18](?!\\)[/size][/b]("|')|^("|')
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: regulärer Ausdruck: Anführungszeichen finden

  Alt 5. Jul 2006, 16:02
Hi,
vielen Dank, ich glaube, sowas habe ich gesucht. Leider bekomme ich folgende Fehlermeldung mit deinem Code:
Code:
---------------------------
Unbenannt - MEdit
---------------------------
TRegExpr(comp): Urecognized Modifier (pos 5)
---------------------------
OK  
---------------------------
Wie gesagt, ich mach das mit SynEdit.

Gruß
Malte
Malte Schmitz
Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.

Entwickler des HTML-Editors MEdit (DP)
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: regulärer Ausdruck: Anführungszeichen finden

  Alt 5. Jul 2006, 16:25
TRegExpr beherrscht keine Lookaheads? Das ist ja wirklich schlecht .
Der Lookahead ist aber sowieso falsch, hier wird ein Lookbehind benötigt:
Code:
(?<!\\)"|'
Aber wenn TRegExpr keine Lookaheads unterstützt, sieht es für Lookbehinds wohl auch schlecht aus .
Ein Workaround:
Code:
(^|[^\\])('|")
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: regulärer Ausdruck: Anführungszeichen finden

  Alt 5. Jul 2006, 16:34
Zitat von Khabarakh:
Aber wenn TRegExpr keine Lookaheads unterstützt, sieht es für Lookbehinds wohl auch schlecht aus .
Leider ja, sehr schade...

Zitat von Khabarakh:
Ein Workaround:
Code:
(^|[^\\])('|")
Da ist ja quasi das gleiche wie meine eigene Idee (s. Post #1), nur ein bischen anders verschachtelt, und damit bleibt leider auch mein Problem, dass ich immer das Zeichen vor dem Anführungszeichen mit zurückgegeben bekomme. Kann man da noch irgendwas tun, außer auf eine neue SynEdit-Version warten?

Gruß
Malte
Malte Schmitz
Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.

Entwickler des HTML-Editors MEdit (DP)
  Mit Zitat antworten Zitat
Benutzerbild von S2B
S2B

Registriert seit: 1. Feb 2004
Ort: Aachen
1.268 Beiträge
 
#6

Re: regulärer Ausdruck: Anführungszeichen finden

  Alt 5. Jul 2006, 17:34
Code:
(?:^|[^\\])('|")
Vielleicht kann er das ja...
Simon Praetorius
Gruß
S2B
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: regulärer Ausdruck: Anführungszeichen finden

  Alt 5. Jul 2006, 17:43
Zitat von S2B:
Code:
(?:^|[^\\])('|")
Vielleicht kann er das ja...
Leider auch nicht...
Code:
---------------------------
Unbenannt - MEdit
---------------------------
TRegExpr(comp): Urecognized Modifier (pos 10)
---------------------------
OK  
---------------------------
langsam habe ich das Gefühl, TRegExpr ist nicht besonders up to date

andere Frage: Was ist das, was du mir da gepostet hast? Ich habe mich heute morgen ein wenig in REs reingelesen, aber sowas kam nicht vor...

Gruß
Malte
Malte Schmitz
Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.

Entwickler des HTML-Editors MEdit (DP)
  Mit Zitat antworten Zitat
Benutzerbild von S2B
S2B

Registriert seit: 1. Feb 2004
Ort: Aachen
1.268 Beiträge
 
#8

Re: regulärer Ausdruck: Anführungszeichen finden

  Alt 5. Jul 2006, 18:18
Bei PERL-kompatiblen Regulären Ausdrücken drückt (?: ) eine Klammer aus, die nicht mit zurückgegeben wird.
Simon Praetorius
Gruß
S2B
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#9

Re: regulärer Ausdruck: Anführungszeichen finden

  Alt 5. Jul 2006, 18:27
Zitat von stz:
Da ist ja quasi das gleiche wie meine eigene Idee (s. Post #1), [...]
Whoops, jetzt wo dus sagst... *g*
Ich nehme an, du musst den Regex als Property des SynEdits angeben und kannst somit keinen eigenen Code noch mit hineinschmuggeln? Wenn ja, sollte es doch zumindest eine weitere Property geben, bei der du die Capture Group, die ausgewertet werden soll, einstellen kannst.

[add]
@S2B: Es wird keine Capture Group erzeugt, das Ergebnis sollte aber das gleiche bleiben.
[/add]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: regulärer Ausdruck: Anführungszeichen finden

  Alt 6. Jul 2006, 14:22
Zitat von Khabarakh:
Ich nehme an, du musst den Regex als Property des SynEdits angeben und kannst somit keinen eigenen Code noch mit hineinschmuggeln?
Genau das ist mein Problem.
Zitat von Khabarakh:
Wenn ja, sollte es doch zumindest eine weitere Property geben, bei der du die Capture Group, die ausgewertet werden soll, einstellen kannst.
Leider nein, das wäre sonst auch eine gute Idee gewesen.
Zitat von Khabarakh:
[add]
@S2B: Es wird keine Capture Group erzeugt, das Ergebnis sollte aber das gleiche bleiben.
[/add]
Jetzt wo ihr das schreibt entsinne ich mich wieder, sowas habe ich gestern morgen doch gelesen.

Danke und Gruß
Malte
Malte Schmitz
Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.

Entwickler des HTML-Editors MEdit (DP)
  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 17:42 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