Regular Expressions

This is an advanced topic (not available in the demo)

Regular expressions are very powerful but also hard to understand and use.

The Find Word feature allows you to do very general pattern matches using what are known as regular expressions. They can also be used when using Duplicate/Filter list to filter or modify a word list.

Regular expression syntax is not the same as the basic Find Word syntax. To use the extended features of regular expressions prefix your search string with a backslash (unless it is obviously a regular expression because it contains one of the special symbols \(+{$| in which case the leading backslash is unnecessary).

A detailed explanation of regular expressions is not possible here. There are many websites and reference books available (the Crossword Compiler feature uses perl-like syntax). However, in summary the basic special characters are

.
(dot) Match any one character
[..]
Character class: match any characters listed
[^…]
Negated character class: match any character not listed
*
Match previous entity 0 or more times
+
Match previous entity 1 or more times
?
Match previous entity 0 or 1 times
^
Start of word or collocation
$
End of word or collocation
|
Or

In addition, as with the basic syntax, you can use the : and ; prefixes to make the search case or punctuation sensitive. Examples

\AP*X
finds abaxial, addax, Ajax, coaxer, pax, etc.
\AP.*X
finds apex, apexes, apoplexy, soapbox, etc.
\^AP.*X$
finds apex, appendix, Appomattox, apteryx
:\^A.*x
finds Aix-en-Provence, Ajax, etc
\ap.?x
finds apex, apexes

Brackets can be used to group letters, so ^(#@)*$ finds, immediately after the start, and up to the end, a series of zero or more letter combinations of the form consonant vowel. Examples

^(#@)*$
finds baba, badinage, magic eye, Tahiti, etc
(tt|ll).*(zz|ww)
finds hail-fellow-well-met, hollow-ware
(zz|ss)$
finds abbess, ableness, zizz, etc.

You can also use \1. \2 etc. to stand for parts of a match in a previous bracket,

(l.*t).*\1
finds, helter-skelter, little by little, multicultural, etc
(…)\1
finds ack-ack, assassin, Mississippi, satiation, etc
^(….).*\1$
finds abracadabra, airy-fairy, beriberi, hand in hand, etc.
;^(....)\1$
finds beriberi, caracara, chowchow, couscous, hotshots
(..)i(..).*\2i\1
finds non-intervention, noninterventionist, noninterventionists
^([xjq]).*\1
finds jejune, jumbo jet, quinquina, x-axis, etc

Regular expression replacements

You can use the Duplicate/Filter list feature to make letter string replacements in a word list. The search pattern can be any regular expression, which is replaced by the text you give as the replacement. The replacement text can include $1, $2, etc., to stand for bracketed parts of a match.

Replacements can be simple, like replacing ise with ize, or more powerful. For example to replace all double letters with single letters use (.)\1 as the replacement pattern, and $1 as the replacement text. Or use the replacement a(.)a with b$1$1b to change, for example, again into bggbin.