by Jack Lyon
After publishing my last article, Lyonizing Word: We Can Do This the Easy Way, or . . ., Rich Adin, An American Editor, wrote:
As written, your wildcard find and replace reduces four names to three if “et al:” is the ending characteristic. How do you write it so that it can handle any number of names, say up to seven?
Good question, and a nice challenge for a wildcard search. Let’s say we have citations with strings of names like this:
Lyon J, Adin R, Carter TO, Jackson TT, Doe J, Smith K, Winger W, et al: blah blah blah
That’s seven names, but let’s see if we can make a wildcard string that will find any number of names and cut them down to three. My first impression is that this might be difficult or even impossible. But let’s try the following wildcard string:
([!^013]@, ){3}([!^013]@, ){1,}(et al:)
Here’s what that means:
Find any character except a carriage return: [!^013]
repeated any number of times: @
followed by a comma
followed by a space
and enclosed in parentheses to form a “group.”
Do that three times in a row: {3}
Find using the same group: ([!^013]@, )
if it occurs once or more (as indicated by the comma): {1,}
followed by “et al:” in parentheses to form a group.
There’s just one problem: It doesn’t work. And that’s how it often is with wildcards — sometimes you have to fiddle around to get the result you want; trial and error are key. So let’s see if we can find just three instances of text using our group:
([!^013]@, ){3}
That doesn’t work either. What in the world is going on here? Let’s try using the group three times in a row:
([!^013]@, )([!^013]@, )([!^013]@, )
That does work. So why not this?
([!^013]@, ){3}
Could it be that {3} doesn’t apply to the wildcard pattern ([!^013]@, ) itself but to the first instance of text that pattern finds? In other words, would that wildcard string find the first three names in a citation like the following?
Lyon J, Lyon J, Lyon J, Lyon J, Lyon J, Lyon J, Lyon J, et al: blah blah blah
Sure enough, that works! So we’ve just learned something new about wildcard searches. For clarity, I’ll restate it here:
Specifying how many times to find something (using {3}, for example) doesn’t apply to the wildcard pattern it follows but to the first instance of text that pattern finds.
Unfortunately, that means we need to work out a different approach to our original problem. How about this?
([!^013]@, [!^013]@, [!^013]@, )([!^013]@, ){1,}(et al:)
Here’s what that means:
Find any character except a carriage return: [!^013]
repeated any number of times: @
followed by a comma
followed by a space
repeated three times
and enclosed in parentheses to form a “group.”
Find using the same group: ([!^013]@, )
if it occurs once or more (as indicated by the comma): {1,}
followed by “et al:” in parentheses to form a group.
But no, that doesn’t work either! Why not? Oh, yeah, because of that {1,}. As we discovered earlier:
Specifying how many times to find something (using {3}, for example) doesn’t apply to the wildcard pattern it follows but to the first instance of text that pattern finds.
Well, okay, then. We’ll stop using numbers (such as {1,}) to specify how many times a pattern should be repeated (at least for our current purposes). Let’s try this instead:
([!^013]@, [!^013]@, [!^013]@, )[!^013]@(et al:)
Here’s what that means:
Find any characters except a carriage return: [!^013]
repeated any number of times: @
followed by a comma
followed by a space
repeated three times
and enclosed in parentheses to form a “group.”
Then find any character except a carriage return: [!^013]
repeated any number of times: @
followed by “et al:” in parentheses to form a group.
Well, son of a gun; that actually works. So now we can use the following in the “Replace With” box:
12
Here’s what that means:
Replace everything that was found
with the text represented by group 1: 1
followed by the text represented by group 2: 2
Group 1, you’ll remember, was this:
([!^013]@, [!^013]@, [!^013]@, )
It finds the first three names in our citations. And group 2 was this:
(et al:)
It finds the end of our citations.
And so, finally, we’ve succeeded in fulfilling Rich’s original request:
As written, your wildcard find and replace reduces four names to three if “et al:” is the ending characteristic. How do you write it so that it can handle any number of names, say up to seven?
Sometimes the easy way isn’t so easy. Nevertheless, it’s almost always worth pursuing. In Rich’s case, it reduced his editing time from hours (removing extraneous names by hand) to minutes (removing the names with a wildcard find and replace). It also gave Rich a wildcard search that he can save in his fabulous EditTools software for use with future projects. And it provided a deeper and clearer understanding of how to use wildcard searches.
After all these years of editing, wildcard searching is the tool I rely on the most. I encourage you to invest the time needed to learn to use this tool, which will repay your efforts many times over. A good place to start is my free paper “Advanced Find and Replace in Microsoft Word.”
I hope you’ll also watch for my forthcoming Wildcard Cookbook for Microsoft Word. I’m still trying to find more real-life examples for the book, so if you have some particularly sticky problems that might be solved using a wildcard search, I hope you’ll send them my way. Maybe I can save you some work and at the same time figure out solutions that will help others in the future. Thanks for your help!
Jack Lyon (editor@editorium.com) owns and operates the Editorium, which provides macros and information to help editors and publishers do mundane tasks quickly and efficiently. He is the author of Microsoft Word for Publishing Professionals and of Macro Cookbook for Microsoft Word. Both books will help you learn more about macros and how to use them.
Looking for a Deal?
You can buy EditTools in a package with PerfectIt and Editor's Toolkit at a special savings of $78 off the price if bought individually. To purchase the package at the special deal price, click Editor's Toolkit Ultimate.