jEdit uses regular expressions to implement inexact search and replace. A regular expression consists of a string where some characters are given special meaning with regard to pattern matching.
Within a regular expression, the following characters have special meaning:
^ matches at the beginning of a line
$ matches at the end of a line
\b matches at a word break
\B matches at a non-word break
\< matches at the start of a word
\> matches at the end of a word
. matches any single character
\d matches any decimal digit
\D matches any non-digit
\n matches the newline character
\s matches any whitespace character
\S matches any non-whitespace character
\t matches a horizontal tab character
\w matches any word (alphanumeric) character
\W matches any non-word (alphanumeric) character
\\ matches the backslash (“\”) character
[abc] matches any character in the set a, b or c
[^abc] matches any character not in the set a, b or c
[a-z] matches any character in the range a to z, inclusive. A leading or trailing dash will be interpreted literally
[[:alnum:]] matches any alphanumeric character
[[:alpha:]] matches any alphabetical character
[[:blank:]] matches a space or horizontal tab
[[:cntrl:]] matches a control character
[[:digit:]] matches a decimal digit
[[:graph:]] matches a non-space, non-control character
[[:lower:]] matches a lowercase letter
[[:print:]] same as [[:graph:]], but also space and tab
[[:punct:]] matches a punctuation character
[[:space:]] matches any whitespace character, including newlines
[[:upper:]] matches an uppercase letter
[[:xdigit:]] matches a valid hexadecimal digit
(abc) matches whatever the expression abc would match, and saves it as a subexpression. Also used for grouping
(?:...) pure grouping operator, does not save contents
(?#...) embedded comment, ignored by engine
(?=...) positive lookahead; the regular expression will match if the text in the brackets matches, but that text will not be considered part of the match
(?!...) negative lookahead; the regular expression will match if the text in the brackets does not match, and that text will not be considered part of the match
\n where 0 < n < 10, matches the same thing the nth subexpression matched. Can only be used in the search string
$n where 0 < n < 10, substituted with the text matched by the nth subexpression. Can only be used in the replacement string
a|b matches whatever the expression a would match, or whatever the expression b would match.
These symbols operate on the previous atomic expression.
? matches the preceding expression or the null string
* matches the null string or any number of repetitions of the preceding expression
+ matches one or more repetitions of the preceding expression
{m} matches exactly m repetitions of the one-character expression
{m,n} matches between m and n repetitions of the preceding expression, inclusive
{m,} matches m or more repetitions of the preceding expression
If a repeating operator (above) is immediately followed by a ?, the repeating operator will stop at the smallest number of repetitions that can complete the rest of the match.