[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Grep - Doppelte Buchstaben finden

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

Grep - Doppelte Buchstaben finden

wrox23
Beiträge gesamt: 2

27. Mär 2021, 16:15
Beitrag # 1 von 10
Bewertung:
(9907 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich habe meinen ersten Beitrag wohl im falschen Forum gepostet (wie löscht man einen Beitrag?). Ich habe folgende Frage:

Ich muss in einem umfangreichen Text doppelte Anfangsbuchstaben finden. Ich habe ein älteres Script gefunden und leicht modifiziert:

Code
\<(?x)(([\l\u])\2)] 


Funktioniert prinzipiell, allerdings findet es nur doppelte Buchstaben, die beide groß- oder beide kleingeschrieben sind. Ich benötige aber auch gemischte Schreibweise, wie in "Ffokussiert". Hat jemand einen Rat?

Viele Grüße - wrox23
X

Grep - Doppelte Buchstaben finden

drerol74
Beiträge gesamt: 507

27. Mär 2021, 17:22
Beitrag # 2 von 10
Beitrag ID: #579268
Bewertung:
(9884 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

probier mal diesen GREP-Ausdruck:

Code
(?x)(?i)\<([\l\u])\1 


(?i) bedeutet »case insensitive«, nicht zwischen Groß- und Kleinschreibung unterscheiden.


Antwort auf: wie löscht man einen Beitrag?


Das können nur die Moderator:innen hier.

Schöne Grüße
Roland


als Antwort auf: [#579267]

Grep - Doppelte Buchstaben finden

pixxxelschubser
Beiträge gesamt: 1708

27. Mär 2021, 21:11
Beitrag # 3 von 10
Beitrag ID: #579270
Bewertung:
(9857 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Der "Leerzeichen-in-Grep-Ignorierer" ist optional, aber nicht unbedingt nötig.
(?i)\<([\l\u])\1
sollte ausreichen.


als Antwort auf: [#579268]

Grep - Doppelte Buchstaben finden

drerol74
Beiträge gesamt: 507

27. Mär 2021, 23:05
Beitrag # 4 von 10
Beitrag ID: #579271
Bewertung:
(9836 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Der "Leerzeichen-in-Grep-Ignorierer" ist optional, aber nicht unbedingt nötig.


Ja, da hast du recht. Ich stelle es hier im Forum nur meist den GREP-Ausdrücken voran, da oft ein Leerzeichen versehentlich am Ende mitkopiert wird und der Ausdruck dann nicht mehr funktioniert.

Im Prinzip würde auch ein \u oder \l statt [\u\l] ausreichen. Das verwirrt aber dann eher, finde ich. Das ist dann was für GREP-Puristen ;)

Schöne Grüße
Roland


als Antwort auf: [#579270]

Grep - Doppelte Buchstaben finden

wrox23
Beiträge gesamt: 2

28. Mär 2021, 11:32
Beitrag # 5 von 10
Beitrag ID: #579272
Bewertung:
(9753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roland,

ganz herzlichen Dank! Funktioniert einwandfrei &#128522;.

Viele Grüße - wrox23


als Antwort auf: [#579268]

Grep - Doppelte Buchstaben finden

pixxxelschubser
Beiträge gesamt: 1708

28. Mär 2021, 21:25
Beitrag # 6 von 10
Beitrag ID: #579278
Bewertung: |
(9675 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: … Ja, da hast du recht. Ich stelle es hier im Forum nur meist den GREP-Ausdrücken voran, da oft ein Leerzeichen versehentlich am Ende mitkopiert wird und der Ausdruck dann nicht mehr funktioniert …

… Schöne Grüße
Roland


Coole Idee.
Also quasi ein "Forum-Copy&Paste-Errormanagement".


als Antwort auf: [#579271]

Grep - Doppelte Buchstaben finden

Rudix
Beiträge gesamt: 51

29. Mär 2021, 07:21
Beitrag # 7 von 10
Beitrag ID: #579280
Bewertung:
(9594 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Einen solchen GREP-Asudruck könntest du z.B. wie folgt aufbauen:

Du suchst irgendetwas am Anfang eines Wortes. Also beginnt dein Suchstring mit
Code
\b 

wie „Wortgrenze“. Das „Etwas“ ist entweder „irgendein Zeichen“
Code
\b. 

oder aber gezielt ein Kleinbuchstabe
Code
\b\l 

(„Pattern“ für lowercase) oder aber gezielt ein Großbuchstabe
Code
\b\u 

(uppercase). Wenn beides einen Treffer erbringen soll, dann fasst du die beiden in eckige Klammern ein:
Code
\b[\l\u] 

Damit du diesen Treffer als sog. „capture“ im weiteren Verlauf referenzieren kannst, fasst du ihn in runde Klammern ein:
Code
\b([\l\u]) 

Hiermit werden nun alle Zeichen gefunden, die GREP, genauer: InDesigns GREP, als „Buchstabe“ erkennt.
Nun suchst du als zweites Zeichen denselben Buchstaben, brauchst also den ersten Treffer gleich wieder:
Code
\b([\l\u])\1 

Die Ziffer 1 verweist auf die erste Klammer im Suchstring.
Hiermit findest du alle Dopplungen von zwei Klein- oder zwei Großbuchstaben.
Damit auch die Kombination von Klein- und Großbuchstabe gefunden wird, gibst du dem Treffer \1 noch die Eigenschaft „Nicht zwischen Groß- und Kleinschreibung unterscheiden“ mit:
Code
\b([\l\u])(?i)\1 

Damit du nun diesen zweiten Buchstaben im Ersetzen-String gezielt ansprechen kannst, definierst du auch diesen als „capture“, also in runden Klammern:
Code
\b([\l\u])((?i)\1) 

Dies ist der verlangte Suchstring.
Um den zweiten Buchstaben einfach rauszulöschen lautet der Ersetzen-String kurz und bündig
Code
$1 

Keinen dieser Codes wie „\b“ oder „(?i)“ musst du auswendig wissen; sie sind alle in dem Dropdown-Menü zu finden, das sich hinter dem Klammeraffensymbol am rechten Rand des „Suchen nach“ bzw. „Ersetzen durch“ Feldes verbirgt.

Wie immer bei Suchen/Ersetzen-Operationen die möglichen Fehler berücksichtigen! Fehler 1. Art: Ich finde etwas Richtiges nicht – der ist m.E. hier nahezu ausgeschlossen, es sei denn bei Schriften, deren Zeichen InDesigns GREP nicht als „Buchstabe“ erkennt. Fehler 2. Art: Ich finde etwas Falsches – da fällt mir sofort „Q“ ein, lange Zeit gespielt von Desmond Llewelyn und nicht etwa, nach einem Suchen/Ersetzen, von Desmond Lewelyn.
Daher bitte grundsätzlich den Knopf „Alle ändern“ nur nach reiflicher Überlegung betätigen!


als Antwort auf: [#579267]

Grep - Doppelte Buchstaben finden

Quarz
Beiträge gesamt: 3555

29. Mär 2021, 10:46
Beitrag # 8 von 10
Beitrag ID: #579282
Bewertung:
(9547 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Rudix,

danke für die gute Erklärung :-)

/1 war mir bisher kein Begriff.
Wieder etwas dazu gelernt. Aber ich
glaube, das werde ich nicht so oft
gebrauchen.

Noch eine Frage:
Wo liegt der Unterschied zwischen
\b und \<

Gruß Quarz
------------------------------
| Win10/64 Prof. | CS6 ver 8.1 |



als Antwort auf: [#579280]

Grep - Doppelte Buchstaben finden

Rudix
Beiträge gesamt: 51

29. Mär 2021, 14:19
Beitrag # 9 von 10
Beitrag ID: #579291
Bewertung:
(9486 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Quarz,

der Unterschied ist: "\<" heißt "Wortanfang", d.h. es wird gezielt (in Leserichtung) nach der Kombination "Nicht-Buchstabe"-"Buchstabe"gesucht. "\b" dagegen heißt allgemein "Wortgrenze", d.h. sowohl die Kombination "Nicht-Buchstabe"-"Buchstabe"als auch "Buchstabe"-"Nicht-Buchstabe" ergibt einen Treffer.

Hier könntest du also in der Tat den Suchstring auch mit "\<" beginnen.

Die Captures im Suchstring kannst du z.B. gut gebrauchen, wenn du nach etwas in einfachen oder doppelten Anführungszeichen suchst. Die beiden möglichen öffnenden Zeichen sind in eckigen und runden Klammern, das schließende Zeichen ist dann einfach "\1". Oder aber du suchst den Inhalt bestimmter Tags mit

Code
<((h[1-6]|p|em|strong))>(.+?)</\1> 


wobei "$2" dann der gesuchte Taginhalt wäre.

Viele Grüße
Rudi


als Antwort auf: [#579282]

Grep - Doppelte Buchstaben finden

Beobachter
Beiträge gesamt: 136

12. Apr 2021, 16:36
Beitrag # 10 von 10
Beitrag ID: #579461
Bewertung:
(8684 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Auch von meiner Seite ein grosses Dankeschön für die zusätzliche Erklärung.
Als Laie, der sich immer wieder auch selber im "Greplen" versucht, bin Ich sehr dankbar um ein paar Inputs.
Herzliche Grüsse, Michel


als Antwort auf: [#579280]
X