s.oliver: Regex immer mal wieder

Beitrag lesen

Servus,

Deine Erklärung ( nimms mir nicht übel, denn du hast dir viel
Mühe gegeben) ist sehr schwer zu verstehen. Das ist nämlich
genau das was ich zuanfangst sagte, wer es einmal verstanden
hat tut sich schwer es Unwissende zu vermitteln. Auch dein
Buchtipp ist extrem kompliziert geschrieben.

zur Ehrenrettung von Regulären Ausdrücken: das ist meine Schuld; ich mache vieles unnötig kompliziert, auch wenn ich das Gegenteil anstrebe. :/

"[^"]+atz[^"]*?"

Anführungszeichen am Anfang , OK (Verstanden)
Dahinter darf keines sein  ,  NotOK (Nicht verstanden)

[a] - finde ein 'a' - das ist klar.
[a]+ - so viele davon, wie möglich

[^a] - finde ein Zeichen, aber nicht 'a'; anders ausgedrückt: akzeptiere jedes Zeichen ausser 'a', aber nur ein Mal
[^a]+ - so viele davon (das heisst: Zeichen, die nicht 'a' sind), wie möglich

Ist doch egal ob dahinter eines ist oder nicht, oder ?

Moment, dann habe ich Dich missverstanden. Wenn Du sagst zwischen "", dann heisst das normalerweise 'zwischen den zwei nächsten ""' - und logischerweise schliesst das ein '"' zwischen "" aus - '"bla " katze bla"' wäre also zum Beispiel nicht zulässig, '"bla katze bla"' schon.

Nein stop du machst ein plus dahinter, also "muss" sogar
eines dahinter gefunden werden, das ist dann der Moment wo ich gar nichts mehr verstehe.

Nein, das Plus bezieht sich auf die Charakterklasse, und die verlangt eben 'Zeichen, die nicht '"' sind'.

Dann soll atz gefunden werden und zwar nicht als einelne
Buchstaben, ok da hatte ich wohl einen Fehler, aber das alleine wars
nicht denn mit Berhards Anregung dahingehend klappts auch nicht.

Sollte aber eigentlich funktionieren - mache mal ein vollständiges, zusammenhängendes Beispiel inklusive Text, Schleife/Bedingung und Audruck damit wir das in unseren Umgebungen mal testen können.

Hinter "atz" soll wieder kein " sein, NotOk versteh ich ja nicht
weil sich ja sowieso alles zwischen 2 Anführungszeichen abspielt.

Das ist auch der Grund dafür, dass ich '[^"]' gewählt habe - so wird sicher gestellt, dass nur Zeichenketten erkannt werden, die im Zusammenhang stehen (alles anhand Deiner Beschreibung) - wenn zwischen den Paaren von Anführungszeichen weitere '"' stehen dürfen, müsste man den Ausdruck anpassen. So wie es ist, ist das die einfachste Art und Weise auszudrücken, dass nur gefunden werden soll, was 'atz' enthält, und zwischen den zwei nächsten (engsten, zusammengehörigen) Anführungszeichen steht.

Ich hoffe das macht ein wenig mehr Sinn. ^^;

Grüsse