InDesign: Powerful Search and Replace Examples
January 21, 2014 / Updated: May 8, 2014 / Lena Shore
Filed under: InDesign, Print Design
Wikipedia 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. [email protected] or [email protected]) |
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. [email protected]) |
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) |
I love your “Fun Tricks”, nice.