Liebe Foristen, in einem Ortsregister möchte ich immer, wenn der 1. Buchstabe im aktuellen Absatz ein anderer ist als im vorherigen Absatz, ein Zeichenformat anwenden. Das könnte ich nun 26 manuel machen oder vielleicht mit einem "intelligenten" Absatzformat.
Das erste Zeichen des aktuellen Absatzes bekomme ich noch hin, aber wie geht das mit dem Vergleich mit dem 1. Zeichen des vorherigen Absatzes? Geht das überhaupt? Ein lookbehind allein reicht ja nicht, ich brauche ja 2 Fundstellen die dann auch noch verglichen werden müssen.
Die Alternative ist halt, das ganze per Script zu erledigen, aber das ist mir diesmal nicht "smart genug". Hat da jemand eine Idee oder kann wenigsten sagen: vergiss es, das geht nicht per grep sondern nur per Script.
Gruß Michael
Grep 1. Zeichen im Absatz mit Zeichenstil auszeichen wenn es vom 1. des vorherigen Absatzes abweicht
Grepstile funktionieren nur absatzweise. D.h. es besteht keine Intelligenz den Inhalt des vorherigen Absatzes innerhalb eines Stils auslesen und es geht in der Tat nur per Skript.
Gruß Kai Rübsamen
Grep 1. Zeichen im Absatz mit Zeichenstil auszeichen wenn es vom 1. des vorherigen Absatzes abweicht
Hallo Kai, gut, wenn das Problem nicht mit einem Absatzformat zu erschlagen ist dann ist das eben so. Aber denkbar wäre noch, eine Grep Suche zu basteln sofern man dort Absatzübergreifend suchen kann. Denn ich denke, diese Suche ist, wenn das Register mal wieder länger ist, immer noch schneller als wenn ich per Schleife mich durch alle Absätze wühle und dort jeweils das erste Zeichen vergleiche. Am Ende ist es mir ja egal, ob ich die Suche scripte oder das Register „per Script und Absatzweise“ durchlaufe. Fix soll es halt sein :-) Prinzipiell interessiert mich eben auch, ob man mit Grep 2 Fundstellen vergleichen kann und je nach Ergebniss „so oder anders“ ersetzen kann.
Grep 1. Zeichen im Absatz mit Zeichenstil auszeichen wenn es vom 1. des vorherigen Absatzes abweicht
Hallo, ich nochmal, hat wirklich keiner eine Idee wie man per Grep in diesem Beispiel das erste B nach dem Axel-Springer-Pl. findet bzw im weiteren Verlauf die anderen "Anfangsbuchstaben"? Es muß ja nicht unbedingt in ein Absatzformat integriert werden, es reicht, wenn einfach nur die Fundstelle mit einem Zeichenformat belegt wird. Wenn es wirklich nicht mit GREP geht, dann muß ich halt in den Sauren Apfel beißen un mich Zeilenweise per Script durch den Text kämpfen. Nur elegant ist doch anders :-)
Grep 1. Zeichen im Absatz mit Zeichenstil auszeichen wenn es vom 1. des vorherigen Absatzes abweicht
Ich weiß nicht, was dich daran so stört, einfach per Script das erste Zeichen in Zeile n mit dem ersten Zeichen der Zeile n-1 zu vergleichen und im Falle der Ungleichheit oder nicht vorhandensein dem Zeichen in Zeile n einen anderen Stil zu verpassen?
Grep geht halt nun mal absatzweise vor und fällt somit für Absatzübergreifendes aus.
Michael, die intelligente Lösung wäre das Skript ;-). Du musst ja verschiedene Zeichen über eine variable Länge vergleichen. Wenn du einen Suchstring a … b erfasst hast, müsste ja die GREP-Suche wieder ums eins zurückspringen, damit du b … c vergleichen kannst. Ich mache mir über sowas keine Gedanken mehr. Wenn ich da nicht sofort eine einfache Lösung sehe, schreibe ich mir ein kleines Skript.
Gruß Kai Rübsamen
Grep 1. Zeichen im Absatz mit Zeichenstil auszeichen wenn es vom 1. des vorherigen Absatzes abweicht
Also diese Register kommen aus Stadtplänen oder Landkarten. Die Teile können auch gerne mal größer werden und dann dauern Script eben auch schon mal etwas länger bei mehreren tausend Ortsnamen (Also Kartograph werde ich des öfteren mit derartigen "Texten" konfrontiert und darf die formatieren). Und da diese Formatierungen immer erst ganz zum Schluß kommen wenn schon alles andere fertig ist, pressiert es dann hat auch mal und dann ist es ein Unterschied, ob eine Suche das in 3 Minuten oder 30 Minuten mit einem Script erledigt. Daher war ich auf der Suche nach einer "möglichst schnellen" Bearbeitung.
Das Grep nur Absatzweise funktioniert, glaube ich nicht, man kann ja auch Absatzmarken bzw den Text zwischen mehreren Absatzmarken finden. Absatzformate mit Grep-Stilen sind aber natürlich auf einzelne Absätze "beschränkt". Nur könnte ich ja auch gut damit leben, wenn es "nur" über die "normale" Grep-Suche funktioniert. Letztendlich wollte ich ja auch in Erfahrung bringen, ob Grep überhaupt Vergleiche wie hier benötigt, durchführen kann.
Als Fazit bleibe ich also erstmal bei meinem einfachen Script welches sich stur durch alle Absätze graben muß auch wenn es viele sind und daher etwas dauert.
Danke an alle, die über mein Problem nachgedacht haben.
Grep 1. Zeichen im Absatz mit Zeichenstil auszeichen wenn es vom 1. des vorherigen Absatzes abweicht
GREP funktioniert nicht absatzweise, GREP-Stile aber schon. Wenn dein Skript für diese paar Einträge 30 Minuten dauert, hat Werner recht und man sollte das vielleicht mal optimieren.
Hast du schon mal daran gedacht, per GREP im Skript zu suchen oder per normaler Textsuche? Das hat den Vorteil, dass du einen String mehrfach untersuchen kannst und auch in einem Schritt das Alphabet abarbeiten kannst.
Wie sieht dein Skript-Ansatz bisher aus?
Gruß Kai Rübsamen
Grep 1. Zeichen im Absatz mit Zeichenstil auszeichen wenn es vom 1. des vorherigen Absatzes abweicht
-> Kai, ja manchmal bin ich hartnäckig wenn ich mit einer Lösung nicht 150% zufrieden bin. Dann suche ich gerne mal weiter oder frage Leute, die sich damit besser auskennen. Manchmal reicht ja schon ein veränderter Blickwinkel von außen um einen auf die richtige / bessere Spur zu bringen :-)
-> Martin (du bist mein Held der Woche oder sogar des Jahres), dein erster Anlauf hat aus
das hier gemacht (Die roten Buchstaben sind "zu viel" :
Mit der 2. Suche konnte ich dann die Zeilen mit dem einzelnen Buchstaben einen Zeichenstil zuweisen. Nur darf bei der 1. Suche nur das allererste A und B gefunden werden und die im speziellen Fall sollen weder A noch in einer eigenen Zeile auftauchen. Wenn ich einen derartigen Index habe, hab ich sogar schon einen GrepStil fertig bekommen, der mit die richtige Formatierung macht
Der 2. Ansatz ist aber aber "die Lösung". Damit wird jeder "Anfangsbuchstabe" des Alphabets erstmal gedoppelt. Wenn, wie in meinem Test, bei Z allerdings nur ein Eintrag steht, oder es bei einem anderen Buchstaben nur "eine Zeile" gibt, dann wird da nichts gefunden. Damit kann ich leben... 1x muß ich ja eh drüber schauen. Da merke ich das dann hoffentlich (auch ich kann mir ja die Anzahl der Ersetzungen ausgeben lassen wenn ich das ganze in ein Script gieße; wenn die nicht = 26 sind dann muß ich eben genau aufpassen beim hin schauen :-) )
Nun, nachdem ich das ganze "am Objekt" getestet habe kann ich sagen, das Martin sich seine goldene Weihnachtskugel verdient hat. Mit
und Ersetzen durch
wird jeweils der das erste Vorkommen von ABC etc gedoppelt.
Im 2. Schritt kann ich dann dieses Dopplungen mit
suchen und durch $2 und dem richtigen Zeichenstil ersetzen. Oder, wenn diese Dopplung wirklich einmal erwünscht ist, auch einfach behalten :-)
Ganz viele Dank an Martin. Jetzt mache ich mich an die Arbeit und "optimiere" mein Script indem ich alles darin entsorge und diese 2 Suchvorgänge scripte. Schneller wird es dann wirklich nicht gehen und mein "Zufriedenheitsgrad" hat die oben erwähnten 150% erreicht.
Abschließend wünsche ich noch allen Mitlesern Frohe Weihnachten und einen Guten Rutsch in nächste Jahr.
Grep 1. Zeichen im Absatz mit Zeichenstil auszeichen wenn es vom 1. des vorherigen Absatzes abweicht