Sök och ersätt i InDesign

Tråden skapades och har fått 7 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Nacka
  • 2010-04-21 10:21

Jag stöter ofta på ett problem när jag jobbar med dokument, och det är att jag vill ha ett tankstreck istället för bindestreck. T.ex. vid 1999–2010 vill jag genomgående ha långa streck. Det går ju söka i Indesign, men jag får likväl lägga in strecket manuellt.

Det ska väl vara möjligt med GREP att söka efter korta streck och ersätta dem med tankstreck samtidigt som siffrorna är intakta.

Någon som vet syntaxen?

I TextWrangler skulle grepsyntaxen för att byta ut alla bindestreck mellan två eller fler siffror se ut så här:

Find-syntax:
(\d+)-(\d+)

Replace-syntax:
\1–\2

(det är ett långt bindestreck alt+- under Replace även om det inte verkar se ut som det...)

Jag vet inte om grep i Indesign skiljer sig i syntaxen men det är nog bara i detaljer i så fall. Mitt exempel ger i alla fall principen för hur man kan lösa det.

Det du behöver är att jobba med "deluttryck"

När du gör en sökning med GREP-syntax så funkar det så att de flesta tecken motsvaras av sig själv, t.ex. om du söker efter "d" så kommer alla förekomster av "d" att hittas. Om du däremot använder vissa symboler t.ex "\d" så betyder det att något visst ska hittas, i just detta fall en siffra.

Vill man kan man också ange ett visst antal repetitioner, så t.ex. för att hitta fyra siffror i följd skriver man \d{4}

Hela sökuttrycket för att hitta årtalsintervaller blir därför \d{4}-\d{4}

Men, nu vill du inte bara hitta något, utan du vill också ersätta en del av det du hittat, och då måste du jobba med s.k. deluttryck, vilket anges genom att skriva deluttrycket inom parentes, i fallet med årtalsintervaller lämpligen tre olika deluttryck, som då ser ut såhär:

(\d{4})(-)(\d{4})

När du sedan vill ersätta något så refererar man till deluttrycken med ett dollar-tecken och ordningen på deluttrycket, såhär:

$1

Den fullständiga ersättningsfrasen för årtalsintervaller blir därför

$1–$3

Vilket betyder "ta det första årtalet i träffen, stoppa dit det bindestreck du angivit och avsluta sedan med det andra årtalet" (som var uttryck nummer 3, om du hängt med i resonemanget ovan)

  • Medlem
  • Nacka
  • 2010-04-21 11:46

Tack för hjälpen!

Precis det jag ville uppnå. Har stött på några olika "sökproblem" som jag kommer testa med liknande syntax framöver.

Perfekt

  • Medlem
  • 2010-04-21 13:47

Kan rekommendera RegExhibit om du vill testa GREP-uttryck innan du låter dem gå löst på din text.

  • Medlem
  • 2010-04-21 15:58

Här lär man sig något.

Ursprungligen av Baron:

Här lär man sig något.

Japp. Hoppas att Microsoft läser den här tråden. Jag vet inte i hur många år jag önskat grep i Word där "Sök och ersätt" sällan räcker till.

@Richard: Aha, det är $ som används i Indesign istället för \

Det finns tyvärr inte två GREP-program i världen som använder samma syntax. Någon borde ta och standardisera terminologin, men tills vidare är det bra att vara misstänksam och testa varenda lite del av sina uttryck så att de matchar det man verkligen vill att de ska matcha.

1
Bevaka tråden