nutri/external/ctre/docs/index.rst

67 lines
1.6 KiB
ReStructuredText

ctre
====
A compile-time (almost) PCRE-compatible regular expression matcher for C++.
Overview
========
Fast compile-time regular expressions with support for matching/searching/capturing at compile-time or runtime. ::
ctre::match<"REGEX">(subject); // C++20
"REGEX"_ctre.match(subject); // C++17 + N3599 extension
.. toctree::
:maxdepth: 2
api
examples
regex_syntax
Supported compilers
===================
- clang 6.0+ (template UDL, C++17 syntax)
- xcode clang 10.0+ (template UDL, C++17 syntax)
- gcc 7.4+ (template UDL, C++17 syntax)
- gcc 9.0+ (C++17 & C++20 cNTTP syntax)
- MSVC 15.8.8+ (C++17 syntax only)
Basic Usage
===========
Template UDL syntax
-------------------
Compiler must support N3599 extension, as GNU extension in gcc (not in GCC 9.1+) and clang. ::
constexpr auto match(std::string_view sv) noexcept {
using namespace ctre::literals;
return "h.*"_ctre.match(sv);
}
If you need N3599 extension in GCC 9.1+ you can't use -pedantic mode and define the macro ``CTRE_ENABLE_LITERALS``.
C++17 syntax
------------
You can provide pattern as a constexpr ``ctll::fixed_string variable``. ::
static constexpr auto pattern = ctll::fixed_string{ "h.*" };
constexpr auto match(std::string_view sv) noexcept {
return ctre::match<pattern>(sv);
}
(this is tested in MSVC 15.8.8)
C++20 syntax
------------
Currently only compiler which supports cNTTP syntax ``ctre::match<PATTERN>(subject)`` is GCC 9+. ::
constexpr auto match(std::string_view sv) noexcept {
return ctre::match<"h.*">(sv);
}