[GastForen Programme Print/Bildbearbeitung Adobe InDesign GREP - erste Versuche - Bedeutung der Klammern?!

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

GREP - erste Versuche - Bedeutung der Klammern?!

Kai Rübsamen
  
Beiträge gesamt: 4684

18. Mai 2007, 18:02
Beitrag # 1 von 30
Bewertung: |
(86042 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Ich habe mir hier: http://www.yabb-adobe-doo.com/...gn_cs3_grep_800.html
einen Film über Grep angesehen und dachte zunächst ich hätte es wenigstens ein bisschen verstanden.

Neugierig geworden habe ich dann die Hilfe in Indesign durchgelesen und das verwirrt mich jetzt doch...

1. Die Hilfe schreibt z.B. wenn ich einen Punkt suchen will ist das Zeichen dafür \. damit der Punkt auch als Punkt erkannt wird, aber warum erkennt dann \d kein d sondern ein beliebiges Zeichen? Wo ist die Logik dahinter?
Auch wird der Punkt erkannt wenn ich (\d)["."](\d) anstelle von (\d)\.(\d) schreibe?! > das "." ohne ""

2. Worin besteht der Unterschied zwischen den drei Klammern
a) [ ]
b) ( )
c) { }

Dies wird in der Hilfe leider nicht erklärt, ist aber wahrscheinlich entscheidend für die richtige Suche?!

3. Wie müsste die Abfrage lauten, wenn ich den Punkt gegen ein Komma tauschen will
und dem Komma ein Zeichenformat grün gebe?

Denn bei Suche (\d)["."](\d) ersetze durch $1,$2

wird auch das Zeichen vorher und nachher eingefärbt.

(Dieser Beitrag wurde von ruebi am 18. Mai 2007, 18:14 geändert)
X

GREP - erste Versuche

Martin Fischer
  
Beiträge gesamt: 12783

18. Mai 2007, 18:12
Beitrag # 2 von 30
Beitrag ID: #292175
Bewertung:
(85874 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

es gibt ein paar besondere Zeichen, die bei GREP reserviert sind.
So z.B. der Punkt. Er steht für jedes beliebige Zeichen.
Um nach dem richtigen Punkt zu suchen, mußt Du ihm wie angegeben einenn Backslash voranstellen: \.

\d ist auch eine reservierte Zeichenkombination. Es steht für digitale Zeichen.
\D steht für alle nicht digitalen Zeichen.

[] definieren einen Bereich oder eine Sammlung.
Z.B. steht [1-5] für alle Zahlen von eins bis fünf.

() definiert den Inhalt einer Variable, auf die bei Bedarf später beim Ersetzen ($1, $2, $n) zurückgegriffen werden kann.

{} definieren Wiederholungen:
\d{4} = genau vier Zahlen
\d{3,} = mindestens drei Zahlen
\d{1,5} = mindestens eine Zahl, höchstens fünf Zahlen.


als Antwort auf: [#292172]
(Dieser Beitrag wurde von Martin Fischer am 18. Mai 2007, 18:22 geändert)

GREP - erste Versuche - Bedeutung der Klammern?!

Thomas Richard
Beiträge gesamt: 19338

18. Mai 2007, 18:28
Beitrag # 3 von 30
Beitrag ID: #292182
Bewertung: |||
(85859 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ ruebi ] Ich habe mir hier: http://www.yabb-adobe-doo.com/...gn_cs3_grep_800.html
einen Film über Grep angesehen und dachte zunächst ich hätte es wenigstens ein bisschen verstanden.

Neugierig geworden habe ich dann die Hilfe in Indesign durchgelesen und das verwirrt mich jetzt doch...


Wäre ja schön, wenn es so schnell ging.

Schau mal, das ist mir neulich in den Browser geraten:
http://www.regenechsen.de/...index.php?regex_allg
Vielleicht kommst du damit besser zurecht.

Auf jeden Fall funktioniert grep nicht ohne vorher regex kapiert zu haben.


als Antwort auf: [#292172]

GREP - erste Versuche - Bedeutung der Klammern?!

Martin Fischer
  
Beiträge gesamt: 12783

18. Mai 2007, 18:50
Beitrag # 4 von 30
Beitrag ID: #292186
Bewertung:
(85848 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Vielleicht kommst du damit besser zurecht.

Eine gute Übersicht und Einführung findest Du auch auf http://www.regular-expressions.info/ und http://www.amk.ca/python/howto/regex/.


als Antwort auf: [#292182]
(Dieser Beitrag wurde von Martin Fischer am 18. Mai 2007, 18:52 geändert)

GREP - erste Versuche - Bedeutung der Klammern?!

Kai Rübsamen
  
Beiträge gesamt: 4684

18. Mai 2007, 19:07
Beitrag # 5 von 30
Beitrag ID: #292188
Bewertung:
(85839 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
da ham wir´s wieder: Im Film ist alles viel einfacher als im realen Leben.

Ihr seit euch sicher, dass man erst mal durch die regex materie durch muss, wenn man mit GREP vernünftig arbeiten will? Ich könnte mir vorstellen, dass der ein oder andere gar keine Lust oder noch weniger Zeit dazu hat ... Ich verstehe auch nicht, dass die Hilfe da fast nichts vernünftiges hergibt ...


als Antwort auf: [#292186]

GREP - erste Versuche - Bedeutung der Klammern?!

Ralf Hobirk
Beiträge gesamt: 5961

18. Mai 2007, 19:15
Beitrag # 6 von 30
Beitrag ID: #292190
Bewertung:
(85833 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe mir gestern Abend auch das von Rübi angesprochene Video angesehen. Es scheint SEHR oberflächlich zu sein, denn der Umstand, dass der Punkt (.) für ein beliebiges Zeichen steht, wird nicht erklärt. Statt dessen hat der Autor den Punkt in eckige Klammern gesetzt, mit dem Hinweis "I want to make the point necessary".

Ich werde mich jedenfalls erstmal intensiv mit euren Links (Danke!) zu Regex auseinandersetzen, denn an GREP wird in ID CS3 wohl kein Weg vorbeiführen. Zumindest nicht, wenn man Suchen & Ersetzen intensiv einsetzen möchte.


als Antwort auf: [#292186]

GREP - erste Versuche - Bedeutung der Klammern?!

Kai Rübsamen
  
Beiträge gesamt: 4684

18. Mai 2007, 19:33
Beitrag # 7 von 30
Beitrag ID: #292193
Bewertung:
(85821 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
@ mediteran:

> Statt dessen hat der Autor den Punkt in eckige Klammern gesetzt, mit dem Hinweis "I want to make the point necessary".

Er hat hier eben nicht ein beliebiges Zeichen gemeint, sondern wollte tatsächlich den Punkt im Text ersetzen. Was das Video mit ["."] beschreibt wird in der Indesign-Hilfe als \. definiert. Mich verwirrt das, weil ich - wie Thomas es richtig getroffen hat - nicht weis, was dahinter steckt.

Die genannten Links (teilweise auf englisch) setzen voraus, dass man sich intensiv mit der Materie befassen will, gut. Es wäre aber auch schön, wenn man gängige Suchabfragen irgendwie so hinbekäme ;-)


als Antwort auf: [#292190]
(Dieser Beitrag wurde von ruebi am 18. Mai 2007, 19:36 geändert)

GREP - erste Versuche - Bedeutung der Klammern?!

Ralf Hobirk
Beiträge gesamt: 5961

18. Mai 2007, 19:46
Beitrag # 8 von 30
Beitrag ID: #292195
Bewertung:
(85811 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Rübi,

Zitat Er hat hier eben nicht ein beliebiges Zeichen gemeint, sondern wollte tatsächlich den Punkt im Text ersetzen.

Ist mir schon klar, habe mich offensichtlich nicht deutlich genug ausgedrückt. Sorry!

Wahrscheinlich hat er den Punkt in eckige Klammern gesetzt, weil er die Suche ja noch auf das Komma erweitert hat, womit wir bei Martins Erklärung wären:
Zitat [] definieren einen Bereich oder eine Sammlung


Ohne Einarbeiten ins Thema geht da wohl nichts, zumindest müssen wir die Syntax kapieren... Ich mach mich heute Abend ran...


als Antwort auf: [#292193]

GREP - erste Versuche - Bedeutung der Klammern?!

Martin Fischer
  
Beiträge gesamt: 12783

18. Mai 2007, 20:03
Beitrag # 9 von 30
Beitrag ID: #292196
Bewertung:
(85800 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> [] definieren einen Bereich oder eine Sammlung

Da habe ich mich nun ziemlich blöd ausgedrückt.
Wie krieg man diese falschen Begriffe wieder weg aus den Gehirnen?
Das sollte eher "Liste" heißen.

[1-5a-d] steht für ein beliebiges Zeichen aus der Liste "1, 2, 3, 4, 5, a, b, c, d"

[0-9] steht für eine beliebige Zahl (ein Zeichen aus der Liste "1, 2, 3, 4, 5, 6, 7, 8, 9") = \d


als Antwort auf: [#292195]

GREP - erste Versuche - Bedeutung der Klammern?!

Robert Zacherl
Beiträge gesamt: 4153

18. Mai 2007, 20:08
Beitrag # 10 von 30
Beitrag ID: #292198
Bewertung: |||
(85797 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ ruebi ] 1. Die Hilfe schreibt z.B. wenn ich einen Punkt suchen will ist das Zeichen dafür \. damit der Punkt auch als Punkt erkannt wird, aber warum erkennt dann \d kein d sondern ein beliebiges Zeichen? Wo ist die Logik dahinter?


Hallo Ruebi,

da der Punkt (".") zum Sprachumfang von RegExp zählt (es steht stellvertretend für eine beliebiges Zeichen), muss es escaped werden, wenn tatsächlich ein Punkt gesucht werden soll. Dieses Escapen geischieht mittels des Backslashes.

Ich bin nicht mit der Grep-Implementierung in CS3 vertraut, aber ein "\d" erkennt kein beliebiges Zeichen, sondern nur "Digits" also die Ziffern 0-9. Ein "d" dagegen sucht eben textuell nach einem "d" oder "D" (je nachdem ob Groß-/Kleinschreibung relevant ist oder nicht). "\d" zählt zum Sprachumfang von RegExp.

Zitat Auch wird der Punkt erkannt wenn ich (\d)["."](\d) anstelle von (\d)\.(\d) schreibe?! > das "." ohne ""


Wenn Sie den Punkt in eckige Klammern setzen, dann definieren Sie einen erlaubten oder nicht erlaubten (vorangestelltes ^) Zeichenvorrat. Innerhalb der eckigen Klammern haben also praktisch alle angegebenen Zeichen (bis auf ^ wenn es als erstes Zeichen angegeben wird) ihre eigentliche Bedeutung. Somit ist es vollkommen überflüssig bzw. sogar falsch die doppelten Anführungszeichen anzugeben. Auch ohne diese ist klar, dass Sie nach einem Punkt zwischen zwei Ziffern suchen.

Zitat 2. Worin besteht der Unterschied zwischen den drei Klammern
a) [ ]
b) ( )
c) { }


[] definieren einen Zeichenvorrat
() dienen zur Gruppierung von Teilausdrücken, deren Ergebnisse dann über die Variablen $1 bis $9 (von links nach rechts durchnummeriert) abgegriffen werden können.
{} dienen zur Angabe von Wiederholungen. So bedeutet z.B. "\d{3}", dass Sie nach genau 3 direkt aufeinander folgenden Ziffern suchen.

Zitat 3. Wie müsste die Abfrage lauten, wenn ich den Punkt gegen ein Komma tauschen will und dem Komma ein Zeichenformat grün gebe?

Denn bei Suche (\d)["."](\d) ersetze durch $1,$2

wird auch das Zeichen vorher und nachher eingefärbt.


Ich kenne wie schon gesagt die Grep-Implementierung in CS3 nicht, aber den Effekt den Sie beschreiben, hat meiner Meinung nach nichts mit Grep zu tun, sondern mit der Vererbung von Zeichenformaten.


als Antwort auf: [#292172]

GREP - erste Versuche - Bedeutung der Klammern?!

Kai Rübsamen
  
Beiträge gesamt: 4684

18. Mai 2007, 20:20
Beitrag # 11 von 30
Beitrag ID: #292199
Bewertung: |
(85788 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
danke für die weiteren infos, es scheint ein spannendes Thema zu werden.

> Somit ist es vollkommen überflüssig bzw. sogar falsch die doppelten Anführungszeichen anzugeben.
Das ist wohl jetzt ein kleines Mistverständnis ;-) Die Forensoftware erlaubt keinen Punkt bei eckigen Klammern. Hier wird der Inhalt nicht angzeigt. Um den Punkt trotzdem darstellen zu können, habe ich ihn in "" gesetzt und dann am Schluß der Hinweis.


als Antwort auf: [#292172]

GREP - erste Versuche

Gerald Singelmann
  
Beiträge gesamt: 6269

18. Mai 2007, 20:47
Beitrag # 12 von 30
Beitrag ID: #292202
Bewertung: |||
(85778 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat \d ist auch eine reservierte Zeichenkombination. Es steht für digitale Zeichen.
\D steht für alle nicht digitalen Zeichen.


Ziffern, nicht Zeichen. Kommt von "digit".

Zitat (\d)["."](\d)


(\d) findet genau eine Ziffer und speichert sie in $1. ["."] findet entweder ein " oder ein . oder ein "
Das zweite " ist überflüssig.
Innerhalb von [ ] können keine Wildcards (also . oder \d) verwendet werden, also muss ein Punkt auch nicht als \. ausgedrückt werden, wie außerhalb von [ ], wo . ein beliebiges Zeichen außer Return meint.

Beim Ersetzen ist es wie immer: wenn etwas gefunden wurde und einen anderen Stil kriegen soll, dann kriegt alles, was gefunden wurde einen neuen Stil.
Das klingt auf den ersten Hör so, als könne Frage 3 nicht gelöst werden.
Aber: Grep wäre nicht gleichzeitig so cool und kompliziert, wenn es nicht doch ginge. Man kann nämlich nach , in einem bestimmten Kontext suchen. Es gibt vier Umgebungsparameter: Lookahead positiv oder negativ und Lookbehind positiv oder negativ.
Hier braucht es also einen positiven Lookahead und einen positiven Lookbehind:
(?<=\d),(?=\d)
Das heißt also: ich suche nur ein Komma, aber direkt links vom Komma muss eine Ziffer stehen und direkt rechts davon auch.

Und nur der Vollständigkeit halber:
(?<=[^A-Za-zäöüÄÖÜ]),(?=\d)
macht etwas sehr ähnliches.. Ich suche ein Komma und links vom Komma soll ein Zeichen aus [ ] einem bestimmten Zeichenvorrat stehen und zwar alle Zeichen die [^ ] NICHT zwischen A und Z oder a und z oder ä,ö,ü,Ä,Ö,Ü sind.
Das ist das gleiche wie ein negativer Lookbehind mit einer positiven Zeichenmenge
(?<![A-Za-zäöüÄÖÜ]),(?=\d)

Ich denke, grep kostet einige Zeit zum Eingewöhnen, Raketentechnik ist es aber auch nicht.


als Antwort auf: [#292175]

GREP - erste Versuche

Gerald Singelmann
  
Beiträge gesamt: 6269

18. Mai 2007, 21:04
Beitrag # 13 von 30
Beitrag ID: #292204
Bewertung: |
(85768 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
In einem anderen Forum fragte grad jemand, ob andere bei "grep" nicht auch an einen schlechtgelaunten Frosch denken müssten.


als Antwort auf: [#292202]

GREP - erste Versuche - Bedeutung der Klammern?!

Thomas Richard
Beiträge gesamt: 19338

18. Mai 2007, 22:20
Beitrag # 14 von 30
Beitrag ID: #292213
Bewertung: ||
(85749 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Rübi,

doch, das geht:

[.]

Der Trick dabei ist, das du ihn hier im Forum doppeln musst.

Also sieht deine Eingabe im Beitrag dafür so aus:

[..]


als Antwort auf: [#292199]

GREP - erste Versuche - Bedeutung der Klammern?!

Kai Rübsamen
  
Beiträge gesamt: 4684

19. Mai 2007, 13:09
Beitrag # 15 von 30
Beitrag ID: #292255
Bewertung: |
(85700 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Vielen Dank euch allen für eine erste Hilfe.

Ich habe heute morgen den Link von Thomas http://www.regenechsen.de/...index.php?regex_allg zumindest in den Anfängen durchgearbeitet und kann dies für den Einstieg empfehlen, da er auf deutsch ist und auch mit Beispielen aufwartet.

Im Downloadbereich stellt der Autor das gesamte Werk auch als PDF zur Verfügung. Wer anschließend mit Begriffen wie z.B. "Quantifizierer" nicht klarkommt, dem sei noch diese Seite empfohlen http://docs.kde.org/...lar-expressions.html

Aber auch den von Martin genannten Link http://www.regular-expressions.info/ sollte man nach der o.g. deutschen Version einmal durchgehen.

Auch wenn das ganz am Anfang genannte Video etwas holprig in der Erklärung und Ausführung erscheint, ist es trotzdem zur Vermittlung eines ersten Eindrucks geeignet und man sollte es sich vor der Vertiefung in die Materie ansehen und selbst nachvollziehen.


als Antwort auf: [#292213]
(Dieser Beitrag wurde von ruebi am 19. Mai 2007, 14:02 geändert)
X