Merge topic 'doc-CMAKE_MATCH_n'

eb08e1fe Help: Document CMAKE_MATCH_<n> variables
8dd99752 Help: Link from if(MATCHES) to regex specification docs
a0091a69 Help: Format string() command regex specification docs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !719
This commit is contained in:
Brad King
2017-04-19 14:42:23 +00:00
committed by Kitware Robot
5 changed files with 49 additions and 24 deletions

View File

@@ -103,7 +103,8 @@ Possible expressions are:
``if(<variable|string> MATCHES regex)``
True if the given string or variable's value matches the given regular
expression.
expression. See :ref:`Regex Specification` for regex format.
``()`` groups are captured in :variable:`CMAKE_MATCH_<n>` variables.
``if(<variable|string> LESS <variable|string>)``
True if the given string or variable's value is a valid number and less

View File

@@ -77,31 +77,43 @@ The replace expression may refer to paren-delimited subexpressions of the
match using ``\1``, ``\2``, ..., ``\9``. Note that two backslashes (``\\1``)
are required in CMake code to get a backslash through argument parsing.
.. _`Regex Specification`:
Regex Specification
"""""""""""""""""""
The following characters have special meaning in regular expressions:
::
^ Matches at beginning of input
$ Matches at end of input
. Matches any single character
[ ] Matches any character(s) inside the brackets
[^ ] Matches any character(s) not inside the brackets
- Inside brackets, specifies an inclusive range between
characters on either side e.g. [a-f] is [abcdef]
To match a literal - using brackets, make it the first
or the last character e.g. [+*/-] matches basic
mathematical operators.
* Matches preceding pattern zero or more times
+ Matches preceding pattern one or more times
? Matches preceding pattern zero or once only
| Matches a pattern on either side of the |
() Saves a matched subexpression, which can be referenced
in the REGEX REPLACE operation. Additionally it is saved
by all regular expression-related commands, including
e.g. if( MATCHES ), in the variables CMAKE_MATCH_(0..9).
``^``
Matches at beginning of input
``$``
Matches at end of input
``.``
Matches any single character
``[ ]``
Matches any character(s) inside the brackets
``[^ ]``
Matches any character(s) not inside the brackets
``-``
Inside brackets, specifies an inclusive range between
characters on either side e.g. ``[a-f]`` is ``[abcdef]``
To match a literal ``-`` using brackets, make it the first
or the last character e.g. ``[+*/-]`` matches basic
mathematical operators.
``*``
Matches preceding pattern zero or more times
``+``
Matches preceding pattern one or more times
``?``
Matches preceding pattern zero or once only
``|``
Matches a pattern on either side of the ``|``
``()``
Saves a matched subexpression, which can be referenced
in the ``REGEX REPLACE`` operation. Additionally it is saved
by all regular expression-related commands, including
e.g. :command:`if(MATCHES)`, in the variables
:variable:`CMAKE_MATCH_<n>` for ``<n>`` 0..9.
``*``, ``+`` and ``?`` have higher precedence than concatenation. ``|``
has lower precedence than concatenation. This means that the regular