_<start>_ and _<end>_ can take one of these forms:

- _<number>_
+
If _<start>_ or _<end>_ is a number, it specifies an
absolute line number (lines count from 1).
+

- `/<regex>/`
+
This form will use the first line matching the given
POSIX _<regex>_. If _<start>_ is a regex, it will search from the end of
the previous `-L` range, if any, otherwise from the start of file.
If _<start>_ is `^/<regex>/`, it will search from the start of file.
If _<end>_ is a regex, it will search starting at the line given by
_<start>_.
+

- `+<offset>` or `-<offset>`
+
This is only valid for _<end>_ and will specify a number
of lines before or after the line given by _<start>_.

+
If `:<funcname>` is given in place of _<start>_ and _<end>_, it is a
regular expression that denotes the range from the first funcname line
that matches _<funcname>_, up to the next funcname line. `:<funcname>`
searches from the end of the previous `-L` range, if any, otherwise
from the start of file. `^:<funcname>` searches from the start of
file. The function names are determined in the same way as `git diff`
works out patch hunk headers (see 'Defining a custom hunk-header'
in linkgit:gitattributes[5]).
