InDesign: Powerful Search and Replace Examples

indesign-logoWikipedia says…

Grep is a command-line utility for searching plain-text data sets for lines matching a regular expression. Grep was originally developed for the Unix operating system, but is available today for all Unix-like systems. Its name comes from the ed command g/re/p (globally search a regular expression and print), which has the same effect: doing a global search with the regular expression and printing all matching lines.

What it means to us is a powerful way to do fantastic search/replace functions with InDesign. If you fire up InDesign and go to the Find/Replace area, you’ll see the GREP area.

Here are some great resources for learning GREP with some effective recipes below. If you study them a bit, you can mix and match to get the search you want and save yourself oodles of time.

Search Function Result
(?i)b((?:[a-z][w-]+:(?:/{1,3}|[a-z0-9%])|wwwd{0,3}[.]|[a-z0-9.-]+[.][a-z]{2,4}/)(?:[^s()<>]+|(([^s()<>]+|(([^s()<>]+)))*))+(?:(([^s()<>]+|(([^s()<>]+)))*)|[^s`!()[]{};:'”.,<>?«»????])) Any url in your document. Go here to learn how this guy did it.
(Milk|Dark) Chocolate Milk Chocolate or Dark Chocolate
(m|M)ilk (c|C)hocolate Milk Chocolate, milk chocolate, milk Chocolate, Milk chocolate
[mM]ilk chocolate milk chocolate or Milk chocolate
[^m]ilk ailk, bilk, etc., but not milk
(?i)milk Case insensitive: Milk, milk, mILk, etc.
colou?r color or colour (the ? means the previous character or expression may or may not be there)
[cC][lu]+e Any string of letters that starts with c and ends with e, such as chocolate, Chocolate, case, coarse, etc.
<cw+e> Any whole word that begins with c and ends with e
bcw+eb Exactly the same as above, but using b for ?word boundary?
s+$ All spaces at the end of a paragraph
s+Z Remove spaces at end of story
[lud.]+@[lud.]+ Simple e-mail address (e.g. or
d{4} Find any four digits (the curly brace expression is not found in the InDesign @ menu)
[-uld._]+@[-uld_]+.[ul]{2,4} More ?robust? email (e.g.
d+/d+ any fraction, such as 1/2, 22/7, or 355/113
(?<!d)(?<!/)d+/(?!11)(?!0)(?!9)d{1,3}(?!/)(?!d) Robust fraction grep: Will find fractions, but leave out dates such as 6/98, 9/11, or 6/17/2012. Unfortunately, it fails on 355/113 (which happens to be a reasonably good approximation of ?, proving that nothing is perfect).
[[=a=]] Find any kind of a, no matter the accent, including a, á, à, ä, etc.
(?<=d)(rd|th|st) Find st, rd, or th ordinals (such as 1st, 2nd, 3rd) that follow a digit?in order to apply superscript to just the ordinal (not the digit).
(?<=().+?(?=)) Find any text inside parentheses, but not including the parentheses. This uses ?Positive Lookbehind? and ?Positive Lookahead?
$d.dd Find a dollar sign followed by one digit, a period, and two digits. Note that the dollar and dot have to be ?escaped? because they normally mean something different.
(.+) Find anything inside parentheses (again, parens need to be escaped)
Q(a+b*c?)E Escape everything; that is, find (a+b*c) exactly, without having to worry about escaping each special character.

Fun Tricks

Description Find Change to
Add an anchored object at the beginning of each paragraph (cut object to clipboard first) ^(.) ~C$1
Reverse first and last name (but watch out for middle names or initials, too) ^(w+)([ .w]+)? (w+) $3, $1$2
After reversing the names (see above), fix any last names that started with Van or De. ^(w+, [ .w]+) (Van|De) $2 $1
Find and remove duplicate words b(w+)b 1 $1
Find and remove duplicate paragraphs/lines in a list ^(.+r)1+ $1
Find lists in which people have actually typed a number followed by a period followed by a space, and apply automatic numbered list style. ^d+. ?(.) $1 (and apply paragraph style that includes auto numbers)

Lena Shore

1 Comment

  1. Mobisociety on April 23, 2014 at 6:54 am

    I love your “Fun Tricks”, nice.