Antworten auf deine Fragen:
Neues Thema erstellen

Serielle Anwendung von Zeichenformate

Ich habe eingefügte Texte, bei denen kursive Stellen noch nicht kurisv gesetzt sind, jedoch wie folgt markiert:
[[kursiv]]Dieser Text sollte kursiv stehen[[/kursiv]]

Ist es möglich diese Teile automatisch mit einem Zeichenformat zu versehen und gleichzeitig die Teile [[kursiv]] und [[/kursiv]] zu löschen?
Danke schon im Voraus
 

Design & Layout

Super! Eine Frage hätte ich da noch: Die von dir genannte Formel funktioniert nicht, wenn die Kursivierung mehrere Absätze umfasst. Also beispielsweise Folgendes:
Dies ist ein [[kursiv]]spezieller Fall.
Denn auch über drei Absätze hinaus, soll kursiviert werden.
Für Redakteurinnen und Redakteure ist es da[[/kursiv]] aufwendig, für jeden Abschnitt einzeln die Markierung anzubringen.

Wie löse ich dieses Problem?
 

sabok

Daueranwender

Ich schau mal, wenn ich am Rechner sitze.


Also da hab ich jetzt keine Lösung gefunden. Es wird sicher eine Möglichkeit geben. Vllt können ja die GREP-Spezies hier weiterhelfen.

Sorry sabok
 
Zuletzt bearbeitet:
Auch wenn bereits beantwortet, noch zwei Sachen:
- Slashes muss man in Grep nicht escapen

- absatzübergreifendes Suchen kann man auf mehrere Arten steuern, z.B.:
  • einschalten per (?s) oder auch mit (?-m)
  • ausschalten per (?-s) oder aber mit (?m)

Viel Spass noch
;)


@mobbytec, die von dir gezeigte Variante bleibt in InDesign Grep immer im Absatz (andere Regex-Anwendungen können hier anders reagieren)


.
 

mobbytec

Aktives Mitglied

Das hängt ja davon ab, was Du bei "Durchsuchen" ausgewählt hast: "Dokument", "Auswahl", "Textabschnitt", ...
Kann das leider nicht mehr nachvollziehen, sitze gerade an einem anderen Rechner. Ich bin aber der Meinung, das "Dokument" ausgewählt war, da ich das mit mehre Textrahmen getestet habe.

Ansonsten sollte dieser Ausdruck
(?m)(\[\[kursiv\]\])([\s\S]+?)(\[\[\/kursiv\]\])

Funktioniert doch bestens und @Castor ist geholfen ;-)
 
… Ansonsten sollte dieser Ausdruck

(?m)(\[\[kursiv\]\])([\s\S]+?)(\[\[\/kursiv\]\])

funktionieren, oder? …

Hallo Ralf,
das funktioniert schon, aber wieso zuerst mehrzeilig einschalten und dann eine Zeichenklasse bemühen – um alle Zeichen, die Nicht-Whitespace und alle Zeichen, die Whitespace sind – zu finden?
Denn dein:
(?m)(\[\[kursiv\]\])([\s\S]+?)(\[\[\/kursiv\]\])
ist letztlich das gleiche wie:
(?s)(\[\[kursiv\]\])(.+?)(\[\[/kursiv\]\])

Allerdings muss dein Grep immer erst die Zeichen in Nicht-Whitespace und Whitespace sortieren. In diesem Fall uninteressant, aber z.B. als Grep-Stil wäre das dann etwas weniger performant.)

Und wie ich schon weiter oben gesagt habe:

- Slashes muss man in Grep nicht escapen …

Viel Spass noch
;)
 

Ellersiek

JedenTag ein wenig besser

Hallo pixxelschubser,
das liegt daran, dass ich mich von

einschalten per ... oder auch mit (?-m)

habe verleiten lassen,

(?-m)(\[\[kursiv\]\])(.+?)(\[\[/kursiv\]\])

zu nutzen. Da dass (für mich) überraschenderweise nicht funktionierte, habe ich den Punkt angezweifelt und siehe da,

(?-m)(\[\[kursiv\]\])([\s\S]+?)(\[\[/kursiv\]\])
oder
(?m)(\[\[kursiv\]\])([\s\S]+?)(\[\[/kursiv\]\])
oder (und logischerweise)
(\[\[kursiv\]\])([\s\S]+?)(\[\[/kursiv\]\])

funktionieren auch (nur, dass ich den letzten Schritt gestern nicht ausprobiert habe).

So kommt man zwar auf Umwegen auch zu einer funktionierenden Lösung, die jedoch, da gebe ich Dir vollkommen recht, performancemäßig mäßig ist (siehe PS II).

Die Beschreibung auf der Adobe-Seite zu (?s), (?-s), (?m), (?-m) ist ebenfalls eher mäßig:
* „Mehrzeilig“ ein (?m)
* „Mehrzeilig“ aus (?-m)
* „Eine Zeile“ ein (?s)
* „Eine Zeile“ aus (?-s)
Was immer das im Detail bedeutet.

Besser ist die Erklärung weiter oben im Link:
  • „Mehrzeilig“ ein
    (?m)
    Beispiel: (?m)^\w+

    In diesem Beispiel wird mit dem Ausdruck nach einem oder mehreren (+) Wortzeichen (\w) am Anfang einer Zeile (^) gesucht. Der Ausdruck (?m) bewirkt, dass alle Zeilen innerhalb des gefundenen Texts als separate Zeilen behandelt werden.

    Der Ausdruck „(?m)^\w“ entspricht dem Anfang eines jeden Absatzes. Der Ausdruck „(?-m)^\w“ entspricht nur dem Anfang des Textabschnitts.
  • „Mehrzeilig“ aus
    (?-m)
    Beispiel: (?-m)^\w+
  • „Eine Zeile“ ein
    (?s)
    Beispiel: (?s)c.a
    Hiermit wird nach einem beliebigen Zeichen ( . ) zwischen den Buchstaben c und a gesucht. Der Ausdruck (?s) entspricht einem beliebigen Zeichen, auch wenn es in der nächsten Zeile steht.

    (.) entspricht allem außer einem Absatzumbruch. (?s)(.) entspricht allem einschließlich eines Absatzumbruchs.
Gruß
Ralf, der gerne hin und wieder in die GREP-Untiefen absteigt und froh ist, wenn er wieder oben angekommen ist.

PS.: Der escapte Slash war 'nen Kopierfehler

PS II: Da die Sonne sich bei uns in OWL noch nicht hat blicken lassen habe ich einen kleinen, unwissenschaftlichen Geschwindigkeitstest gemacht:
1. Indesign starten
2. Testdatei öffnen
3. Grep durchführen (78120 Ersetzungen)

[[kursiv]]Dieser Text sollte kursiv stehen
Dieser Text sollte kursiv stehen
Dieser Text sollte kursiv stehen
Dieser Text sollte kursiv stehen
[[/kursiv]]

Ein signifikanter Unterschied war nicht zu erkennen:
(?s)(\[\[kursiv\]\])(.+?)(\[\[/kursiv\]\]) hat knapp 44 Sekunden benötigt,
(\[\[kursiv\]\])([\S\s]+?)(\[\[/kursiv\]\]) war mit 41 Sekunden etwas schneller.

(es spielt übrigens keine Rolle, ob mit (?m), (?-m) oder ohne.

Das die zweite Variante einen Tick schneller ist, könnte daran liegen, das die Prüfung der Absatzenden bei der (?s)-Variante aufwändiger ist.

Letztendlich jedoch egal, der Unterschied ist mit weniger als 10% marginal und wer hat schon 78120 Ersetzungen zu machen? Und wer weiß, wie der GREP programmiert ist - sicher nicht einfach, von außen betrachtet die Performance zu bewerten.

PS III: Gut, dass die guten, alten UNIX-Zeiten schon lange vorbei sind. Dieses "Wissen" musste man früher doch häufiger einsetzen.

Gruß
Ralf
 
Zuletzt bearbeitet:
Schön, dass du aus den
… GREP-Untiefen …
wieder emporgestiegen bist.
;)

Netter Test übrigens.
By the way, wie oft hast du den Test mit den ~78000 Wiederholungen durchlaufen lassen? Für ein zumindest einigermaßen repräsentatives Ergebnis würde ich (wahrscheinlich) wenigstens 15 - 20 Durchläufe ansetzen. Wie hast du die Dauer ermittelt?

Ich hatte mir schon vor Längerem einmal vorgenommen, einige Grep-Stile auf ihre Performance hin zu testen – aber: keine Zeit, keine Lust, kein Plan, ob man Grep-Stile ähnlich dem Grep S&E testen kann …
 

Ellersiek

JedenTag ein wenig besser

wie oft hast du den Test mit den ~78000 Wiederholungen durchlaufen lassen

So ungefähr drei bis 4-mal, jedes mal handgestoppt, allerdings immer mit den gleichen Ergebnisse - und auf eine zehntel Sekunde kam es mir (bei 40 Sekunden Laufzeit) nicht wirklich an.

Ich wollte eigentlich nur mal sehen, ob es signifikante Unterschiede in der Laufzeit gibt (die können, je nach Grep-Aufbau, ja durchaus entstehen).

In diesem Fall eben nicht und ein klein wenig anders als erwartet:).

Gruß
Ralf
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.449
Mitglieder
67.556
Neuestes Mitglied
Ggirl
Oben