From a0091a697e275a86a493e4fd87902a0eb9067d55 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 18 Apr 2017 14:42:09 -0400 Subject: Help: Format string() command regex specification docs --- Help/command/string.rst | 50 +++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/Help/command/string.rst b/Help/command/string.rst index 698a91d..7199178 100644 --- a/Help/command/string.rst +++ b/Help/command/string.rst @@ -82,26 +82,36 @@ 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 + ``CMAKE_MATCH_`` for ```` 0..9. ``*``, ``+`` and ``?`` have higher precedence than concatenation. ``|`` has lower precedence than concatenation. This means that the regular -- cgit v0.12 From 8dd997526370c4d1232bcde46e0eb2a751dfa3fd Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 18 Apr 2017 14:45:04 -0400 Subject: Help: Link from if(MATCHES) to regex specification docs --- Help/command/if.rst | 2 +- Help/command/string.rst | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Help/command/if.rst b/Help/command/if.rst index 2a087d0..f0a9588 100644 --- a/Help/command/if.rst +++ b/Help/command/if.rst @@ -103,7 +103,7 @@ Possible expressions are: ``if( MATCHES regex)`` True if the given string or variable's value matches the given regular - expression. + expression. See :ref:`Regex Specification` for regex format. ``if( LESS )`` True if the given string or variable's value is a valid number and less diff --git a/Help/command/string.rst b/Help/command/string.rst index 7199178..fe38c99 100644 --- a/Help/command/string.rst +++ b/Help/command/string.rst @@ -77,6 +77,8 @@ 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 """"""""""""""""""" -- cgit v0.12 From eb08e1febba1cdc71bea2aee6431b5ed8f711af2 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 18 Apr 2017 14:45:49 -0400 Subject: Help: Document CMAKE_MATCH_ variables --- Help/command/if.rst | 1 + Help/command/string.rst | 2 +- Help/manual/cmake-variables.7.rst | 1 + Help/variable/CMAKE_MATCH_COUNT.rst | 7 ++++--- Help/variable/CMAKE_MATCH_n.rst | 10 ++++++++++ 5 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 Help/variable/CMAKE_MATCH_n.rst diff --git a/Help/command/if.rst b/Help/command/if.rst index f0a9588..edd343d 100644 --- a/Help/command/if.rst +++ b/Help/command/if.rst @@ -104,6 +104,7 @@ Possible expressions are: ``if( MATCHES regex)`` True if the given string or variable's value matches the given regular expression. See :ref:`Regex Specification` for regex format. + ``()`` groups are captured in :variable:`CMAKE_MATCH_` variables. ``if( LESS )`` True if the given string or variable's value is a valid number and less diff --git a/Help/command/string.rst b/Help/command/string.rst index fe38c99..4f0c45c 100644 --- a/Help/command/string.rst +++ b/Help/command/string.rst @@ -113,7 +113,7 @@ The following characters have special meaning in regular expressions: in the ``REGEX REPLACE`` operation. Additionally it is saved by all regular expression-related commands, including e.g. :command:`if(MATCHES)`, in the variables - ``CMAKE_MATCH_`` for ```` 0..9. + :variable:`CMAKE_MATCH_` for ```` 0..9. ``*``, ``+`` and ``?`` have higher precedence than concatenation. ``|`` has lower precedence than concatenation. This means that the regular diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 7347bcc..4317f67 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -56,6 +56,7 @@ Variables that Provide Information /variable/CMAKE_MAJOR_VERSION /variable/CMAKE_MAKE_PROGRAM /variable/CMAKE_MATCH_COUNT + /variable/CMAKE_MATCH_n /variable/CMAKE_MINIMUM_REQUIRED_VERSION /variable/CMAKE_MINOR_VERSION /variable/CMAKE_PARENT_LIST_FILE diff --git a/Help/variable/CMAKE_MATCH_COUNT.rst b/Help/variable/CMAKE_MATCH_COUNT.rst index 8b1c036..355e834 100644 --- a/Help/variable/CMAKE_MATCH_COUNT.rst +++ b/Help/variable/CMAKE_MATCH_COUNT.rst @@ -3,6 +3,7 @@ CMAKE_MATCH_COUNT The number of matches with the last regular expression. -When a regular expression match is used, CMake fills in ``CMAKE_MATCH_`` -variables with the match contents. The ``CMAKE_MATCH_COUNT`` variable holds -the number of match expressions when these are filled. +When a regular expression match is used, CMake fills in +:variable:`CMAKE_MATCH_` variables with the match contents. +The ``CMAKE_MATCH_COUNT`` variable holds the number of match +expressions when these are filled. diff --git a/Help/variable/CMAKE_MATCH_n.rst b/Help/variable/CMAKE_MATCH_n.rst new file mode 100644 index 0000000..c7dd623 --- /dev/null +++ b/Help/variable/CMAKE_MATCH_n.rst @@ -0,0 +1,10 @@ +CMAKE_MATCH_ +--------------- + +Capture group ```` matched by the last regular expression, for groups +0 through 9. Group 0 is the entire match. Groups 1 through 9 are the +subexpressions captured by ``()`` syntax. + +When a regular expression match is used, CMake fills in ``CMAKE_MATCH_`` +variables with the match contents. The :variable:`CMAKE_MATCH_COUNT` +variable holds the number of match expressions when these are filled. -- cgit v0.12